0
我的代码的相关部分如下:初始化静态类对象没有零参数构造C++
foo.h中:
namespace foo_ns {
class Foo
{
static Class1 object1;
};
}
在Foo.cpp中
#include <foo.h>
namespace foo_ns {
Class1 Foo::object1(/*another object. Need to call copy constructor*/)
}
这里,“另一个对象”在main()
中定义。此外,Class1是大型库的一部分,并且没有零参数构造函数,因此只需删除括号即可在编译期间发生no matching function call
错误。据我所知,静态初始化必须在任何函数之外执行。
所以ithere这方面的任何解决方法吗?
你需要先用括号没有或括号来初始化静态变量。然后为其分配主要复制的对象。对不起,我没有看到评论。 – 101010
一个非常类似的问题:http://stackoverflow.com/questions/33572283/can-i-initialize-a-static-const-member-at-run-time-in-c。 –
正如我所说,我最初使用没有括号,并得到上述错误。使用大括号初始化给出了错误'必须通过构造函数初始化,而不是由{...}'这是唯一可用的性病另一个错误'扩展初始化列表前面= C++ 11' – Ali250