我有许多类都将共享相同的信息,所以我想我会在基类中创建一个静态结构,然后从中继承所有派生类。但我遇到链接问题,找不到符号。我该怎么做呢?
这是结构:
struct Settings {
string Baseurl;
string Username;
string Password;
};
这是基类:
class Base {
protected:
static Settings _settings;
static curl _http;
Base();
~Base();
};
派生类:
class WebMethod1 : Base {
}
class WebMethod2 : Base {
}
我不一定需要在构造函数上设置这些值,但似乎vs2013希望我这样做。但不知道如何去做。
感谢您的帮助。
答案 0 :(得分:2)
在类Base中,声明一个名为Settings
的静态_settings
(位于Base的名称空间中)。此声明仅表示意图。现在您还必须提供定义:
在cpp文件中写下:
Settings Base::_settings;
现在您已经定义了(给定内容)符号Base::_settings
。您已将其定义为默认构造的设置实例。
更新
同样,你有声明 Base :: Base()和Base :: ~Base()。您需要提供这些方法的定义。
空构造函数看起来像这样:
Base::Base() {
}
析构函数看起来像这样:
Base::~Base() {
}
或
Base::~Base() = default;
一些观察结果:
Base是基类,因此请使用析构函数virtual
。
如果基类构造函数没有做任何事情,请不要声明它。对于什么都不做的代码,你给自己一个维护问题。