我正在尝试在C ++中定义一些静态常量字符串,并从不同的文件中引用它们。
以下是我如何设置此信息:
structClass.h
namespace test {
typedef struct customstructure{
static const std::string stringA;
} customstructure;
}
structClass.cpp
namespace test {
static const std::string customstructure::stringA = "This is String A";
}
现在我想知道如何在第三个文件中调用它?
execute.cpp
void printStringA(){
printf("stringA is: %s", test::customstructure::stringA.c_str());
}
给了我一个编译错误,上面写着:
对'test :: customstructure :: stringA'的未定义引用
答案 0 :(得分:0)
在此代码中:
namespace test {
static const std::string customstructure::stringA = "This is String A";
}
删除单词static
。事实上,如果有这个错误,您的编译器应该提供更有用的错误消息(尽管我认为未定义的引用符合"诊断"的要求)。
标准参考:[class.static.data]#5
表示静态数据成员具有外部链接,但在定义中使用关键字static
将指定内部链接。