我正在尝试编写一段 C++ 代码,该代码从静态类成员中分配一个类的实例,同时让它知道任何继承的子类的大小
.h 文件
class MyObject {
int toastNumber;
static MyObject *allocate();
}
class MySubclass : public MyObject {
int NSABackdoor;
int someOldFunction();
}
.cpp 文件
#include ".h file"
MyObject *MyObject::allocate() {
return (MyObject *)calloc(1, sizeof(this)); // error here
}
int MySubclass::someOldFunction() {
return 6;
}
main.cpp 文件
#include other files
int main() {
MySubclass *instance = MySubclass::allocate();
return 0;
}
在尝试编译代码时,g++ 会吐出一个错误,例如
MyObject.cpp: In static member function ‘static MyObject* MyObject::allocate()’:
MyObject.cpp:5:47: error: ‘this’ is unavailable for static member functions
可以从这样的成员函数中分配实例吗?我不能只使用 sizeof(MyObject) 因为那会破坏继承。我知道这可以用宏来完成,但我更喜欢它作为类函数。
谢谢
--
凯兰