C++ オブジェクトで extern を使用しようとすると、未定義の参照エラーが発生します。整数型では発生しないようです。何が足りないの?! 以下のコードは問題を再現します。
file1.cpp:
#include <string>
const std::string s("test");
int i = 99;
int main()
{
extern void Test();
Test();
}
file2.cpp:
#include <iostream>
#include <string>
extern const std::string s;
extern int i;
void Test()
{
std::cout << s << std::endl;
std::cout << i << std::endl;
}
's' std::string 変数の使用法をコメント アウトすると、リンク エラーがなくなります。
これに似たSOに関する他の質問がありますが、それらはすべて変数を定義していない人々に関連しているようです。