从具有静态结构的基类派生

时间:2015-01-24 07:43:18

标签: c++ class inheritance linker

我有许多类都将共享相同的信息,所以我想我会在基类中创建一个静态结构,然后从中继承所有派生类。但我遇到链接问题,找不到符号。我该怎么做呢?

这是结构:

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希望我这样做。但不知道如何去做。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

在类Base中,声明一个名为Settings的静态_settings(位于Base的名称空间中)。此声明仅表示意图。现在您还必须提供定义

在cpp文件中写下:

Settings Base::_settings;

现在您已经定义了(给定内容)符号Base::_settings。您已将其定义为默认构造的设置实例。

更新

同样,你有声明 Base :: Base()和Base :: ~Base()。您需要提供这些方法的定义

空构造函数看起来像这样:

Base::Base() {
}

析构函数看起来像这样:

Base::~Base() {
}

Base::~Base() = default;

一些观察结果:

  1. Base是基类,因此请使用析构函数virtual

  2. 如果基类构造函数没有做任何事情,请不要声明它。对于什么都不做的代码,你给自己一个维护问题。