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