私はいくつかのコードから始めます:
class myNonPODClass
{
public:
virtual ~myNonPODClass() {}
class
{
public:
myNonPODClass* GetContainer()
{
return (myNonPODClass*)((int8_t*)(this) - offsetof(myNonPODClass, member));
}
} member;
};
明らかに、これは不自然な例です。コードは正常にコンパイルされますが、「非 POD タイプ 'myNonPODClass' のオフセット」が心配です。myNonPODClass ポインターをネストされた匿名クラス コンストラクター (または同様のもの) に渡すことなく、本質的に同じことを行うより良い方法はありますか? 「メンバー」は、初期化なしで準備ができている必要があります。出来ますか?ありがとう!
いったい何のためにこれが必要なのか疑問に思っている方のために、私の PROPERTY マクロとコメントアウトされたペーストビンの例 (はい、素晴らしいです ^^ ): http://pastebin.com/xnknf39m