从具有静态结构的基础 class 派生
Deriving from a base class with a static struct
我有很多 classes 都将共享相同的信息,所以我想我会在基 class 中创建一个静态结构,然后从它继承所有派生的 classes。但是我 运行 遇到链接问题,找不到符号。我该如何正确执行此操作?
结构如下:
struct Settings {
string Baseurl;
string Username;
string Password;
};
这里是基础class:
class Base {
protected:
static Settings _settings;
static curl _http;
Base();
~Base();
};
派生 classes:
class WebMethod1 : Base {
}
class WebMethod2 : Base {
}
我不一定需要在构造函数上设置这些值,但 vs2013 似乎希望我这样做。但不知道该怎么做。
感谢您的帮助。
在 class Base 中声明一个名为 _settings
的静态 Settings
(在 Base 的命名空间中)。此 声明 仅说明意图。现在您还必须提供 definition:
在cpp文件中写下:
Settings Base::_settings;
现在您已经定义了(赋予了实质)符号Base::_settings
。您已将其定义为 Settings 的默认构造实例。
更新:
同样,您声明了 Base::Base() 和 Base::~Base()。您需要提供这些方法的定义。
一个空的构造函数看起来像这样:
Base::Base() {
}
析构函数看起来像这样:
Base::~Base() {
}
或
Base::~Base() = default;
几点观察:
Base 是一个基class,所以使析构函数virtual
.
如果基本 class 构造函数不执行任何操作,请不要声明它。你给自己带来了一个什么都不做的代码的维护问题。
我有很多 classes 都将共享相同的信息,所以我想我会在基 class 中创建一个静态结构,然后从它继承所有派生的 classes。但是我 运行 遇到链接问题,找不到符号。我该如何正确执行此操作?
结构如下:
struct Settings {
string Baseurl;
string Username;
string Password;
};
这里是基础class:
class Base {
protected:
static Settings _settings;
static curl _http;
Base();
~Base();
};
派生 classes:
class WebMethod1 : Base {
}
class WebMethod2 : Base {
}
我不一定需要在构造函数上设置这些值,但 vs2013 似乎希望我这样做。但不知道该怎么做。
感谢您的帮助。
在 class Base 中声明一个名为 _settings
的静态 Settings
(在 Base 的命名空间中)。此 声明 仅说明意图。现在您还必须提供 definition:
在cpp文件中写下:
Settings Base::_settings;
现在您已经定义了(赋予了实质)符号Base::_settings
。您已将其定义为 Settings 的默认构造实例。
更新:
同样,您声明了 Base::Base() 和 Base::~Base()。您需要提供这些方法的定义。
一个空的构造函数看起来像这样:
Base::Base() {
}
析构函数看起来像这样:
Base::~Base() {
}
或
Base::~Base() = default;
几点观察:
Base 是一个基class,所以使析构函数
virtual
.如果基本 class 构造函数不执行任何操作,请不要声明它。你给自己带来了一个什么都不做的代码的维护问题。