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不能在当前范围内定义。”这样做的正确方法是什么?
答
您可以设置值main()
但定义必须是在全球范围内:
#include "a.h"
#include "b.h"
B A::b; // <<<<<<
int main() {
....
A::b = B(arg1, arg2);
// ^^^^
顺便说一下,这不是一个很好的代码风格。你应该使用尽可能少的静态构造函数。 – merito
这是为什么? @merito –
因为C++没有定义构造静态对象的顺序。你应该小心使用它。 – merito