嘗試初始化靜態地圖。從我收集的其他問題來看,它必須在頭文件之外完成,並且在C++ 11中可以使用統一初始化來完成。但是,當我嘗試使用其他靜態成員,我得到的問題:使用靜態成員初始化靜態地圖
了foo.h:
#include <map>
class TestSuite {
static constexpr int x = 3;
static std::map<int, int> v;
};
Foo.cpp中:
#include "foo.h"
std::map<int, int> TestSuite::v = {{x, 5}};
int main() {
TestSuite t;
}
然後我得到的錯誤
In function `__static_initialization_and_destruction_0(int, int)':
foo.cpp:(.text+0x4b): undefined reference to `TestSuite::x'
collect2: error: ld returned 1 exit status
似乎正常工作,你使用什麼編譯器? – IceFire
5.2,必須是6.1中的一項新功能 – acornellier