如何解决从连续调用中操纵第一次构造函数调用的行为
我必须将 C++98 用于我正在开发的应用程序。
我想根据是否第一次调用构造函数来控制构造函数的行为。 对于第一次构造函数调用,我想执行一些额外的代码,但它不能在连续调用中执行。 为此,我决定使用一个默认值为 false 的静态 bool,在第一次构造函数调用后,它会在其他所有调用中都设置为 true。
class data_sender {
private:
static bool library_initialized;
public: // etc.
};
这是保密的,因为我不希望这个类的使用者直接操作它。 它不是 const,因为显然我想在构造函数中更改它。
现在我不能为此分配默认值,它说 c++ 禁止这种非常量静态变量初始化。
我认为我的方法在这里是错误的,我应该使用其他方法。 我对 C++ 比较陌生,所以即使你给我指出一些文章或告诉我要搜索什么。
我注意到的另一个奇怪的事情是,当我在 .h 文件中将 library_initialized 定义为 false 时,
class data_sender { .... };
bool data_sender::library_initialized = false;
但是如果我在 data_sender.cpp 中定义它,它允许我这样做,并且编译没有错误。
data_sender::data_sender() { ... } //constructor deFinition
bool data_sender::library_initialized = false; // This is inside data_sender.cpp
这个应用程序是为 mips 和 ipq 架构而开发的,如果重要的话,将使用 gcc 4.8 (openwrt-mips) 和 gcc 5.2 (openwrt-arm) 编译。
我在 stackoverflow 上找到了一个与我类似的答案,为什么我只需要在实现文件 (.cpp) 中而不是在标题 (.h) 中指定它。
Static constant string (class member)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。