C++定义内

问题描述:

静态对象我有一个A类在 “啊”:C++定义内

#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不能在当前范围内定义。”这样做的正确方法是什么?

+0

顺便说一下,这不是一个很好的代码风格。你应该使用尽可能少的静态构造函数。 – merito

+0

这是为什么? @merito –

+0

因为C++没有定义构造静态对象的顺序。你应该小心使用它。 – merito

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

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

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

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