継承されたサブクラスのサイズを認識しながら、静的クラス メンバー内からクラスのインスタンスを割り当てる 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) をそのまま使用することはできません。継承が壊れてしまうからです。これはマクロで実行できることはわかっていますが、クラス関数として使用することをお勧めします。
ありがとうございました
--
カエラン