如何从另一个类中的结构引用静态成员变量

时间:2014-06-03 20:10:57

标签: c++ struct reference

我正在尝试在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'的未定义引用

1 个答案:

答案 0 :(得分:0)

在此代码中:

namespace test {
     static const std::string customstructure::stringA = "This is String A";
}

删除单词static。事实上,如果有这个错误,您的编译器应该提供更有用的错误消息(尽管我认为未定义的引用符合"诊断"的要求)。

标准参考:[class.static.data]#5表示静态数据成员具有外部链接,但在定义中使用关键字static将指定内部链接。