我对以下定义的行为非常奇怪
const TestListNew<ServerTestParams> test_list =
{
"SERVER",
{
{func, VALUE, "some string", ENUM1_VAL, ENUM2_VAL}
}
};
TestListNew
template <class TestParamType>
struct TestListNew
{
std::string module_name;
std::vector<TestInfo<TestParamType> > tests;
};
TestInfo是
template <class TestParamType>
struct TestInfo
{
TestResult (*function)(TestParamType * params);
unsigned int code;
const char * name;
Enum1 enum1;
Enum2 enum2;
};
我有
In function `main':
/path/file.cpp:192: undefined reference to `test_list'
随着nm返回
00000000 b _ZL9test_list
最令人遗憾的是,当我将此定义移动到另一个源文件时,一切正常,而nm表示
0000000c B test_list
据我所知,test_list在第一种情况下是本地符号,但完全没有原因。
提前谢谢。