我读了这篇好文章(关于 undefined-reference-to-a-static-member),但据我所知,我并不总是需要在 cpp 中定义静态成员。所以我寻求帮助以了解规则。
几个例子——cpp中没有def的所有例子。在类 Master 声明的 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
//这里用在静态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_;
};
如果在我声明静态静态文件*(并在类方法中使用它)的另一个类中,我不会因为未定义而收到错误。
在所有情况下,我都在这些静态成员中使用。
任何人都可以为我清除规则吗?
谢谢