从具有静态结构的基础 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;

几点观察:

  1. Base 是一个基class,所以使析构函数virtual.

  2. 如果基本 class 构造函数不执行任何操作,请不要声明它。你给自己带来了一个什么都不做的代码的维护问题。