質問: NULL) { return; // error } } ``` 上記のような方法は正しいでしょうか? 他のtestError未初期化の判別方法がありましたらご教授ください。
回答: 既に774RRさんから回答がありますので、それ以外の補足を。 ``` class TErrorLogger { public: void virtual Add() {}; }; TErrorLogger* p; p->Add(); ``` のように仮想関数の場合、実行時にポインター`p`から`Add()`関数のアドレスを取得します(仮想関数たる所以です)。ですので正しく初期化されていない場合は呼び出しが成功することなく実行時エラーになります。というわけで`Add()`側、クラス設計者側で対処することはできません。 ですのでC++言語では基本的には呼び出し側の責任と考えるべきです。774RRさんの回答されている対策1~3についても呼び出し側の対策でしかありません。 もしクラス設計者側で対処するのであれば、publicメンバーに関しては静的関数で提供するのはどうでしょうか? 特に質問のケースであればloggerのようですので可能だと思います。