【问题标题】:C++ defining static object inside classC++ 在类中定义静态对象
【发布时间】:2017-08-12 09:55:57
【问题描述】:

我在“a.h”中有一个 A 类:

#include "b.h"

class A {
public:
    static B b;
}

我想在另一个函数中初始化 b

在“main.cpp”中:

#include "a.h"
#include "b.h"

int main () {
    ....
    B A::b = B(arg1, arg2);

但是语法检查器给了我错误:“成员 A::b 不能在当前范围内定义。”这样做的正确方法是什么?

【问题讨论】:

  • 顺便说一句,这不是一个好的代码风格。你应该尽量少用静态构造函数。
  • 这是为什么呢? @merito
  • 因为C++没有定义构造静态对象的顺序。你应该小心使用它。

标签: c++ class object scope static


【解决方案1】:

您可以在main() 中设置值,但定义必须在全局范围内:

#include "a.h"
#include "b.h"

B A::b; // <<<<<<

int main () {
    ....
    A::b = B(arg1, arg2);
 // ^^^^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    相关资源
    最近更新 更多