この良い投稿(undefined-reference-to-a-static-member について)を読みましたが、私が見る限り、cpp で静的メンバーを常に定義する必要があるとは限りません。だから私はルールを理解するために助けを求めています。
いくつかの例 - cpp に def がないすべての例。クラスマスター宣言のhファイルには次のとおりです。
class Master{
public:
static IDataSynchronization& sync_data_cb_;
}
cpp で:
void Master::start(IDataSynchronization& syncDataCB); - error for undefined
void Master::start(int p,IDataSynchronization& syncDataCB); no error
// ここでは static sync_data_cb_ void Master::sendData(){ list data = sync_data_cb_.syncData(); で使用します。list::iterator it; for (it = data.begin(); it != data.end(); ++it) { sendto(instance_->data_sock_fd_, (*it).c_str(), (*it).length(), 0 ,(const struct sockaddr *) &instance_->target_host_data_, instance_->sockadd_length_);
}
}
このクラスの場合:
class Logger {
public:
static void Log(const char *format, ...);
private:
static FILE* file_;
static mutex mtx_;
};
別のクラスで static static FILE* を宣言した (そしてそれをクラスメソッドで使用した) 場合、未定義のエラーは発生しません。
すべての場合において、これらの静的メンバーで使用しています。
誰かルールをクリアしてくれませんか?
ありがとうございました