メソッド (またはコンストラクター) のパラメーターの既定値に、ある種のセマンティック ロジックを適用しようとしています。これが私が試したことです:
#include <iostream>
#include <vector>
class Test
{
public:
static const std::vector<int> staticVector;
Test (const std::vector<int> &x = Test::staticVector) {}
};
int main ()
{
Test x;
return 0;
}
staticVector はかなり冗長ですが、C++ では std::vector のインスタンスとして NULL を渡すことができないため、コンストラクター std::vector() への冗長な呼び出しを避けたいので、このアプローチを思いつきました.. .
残念ながら、コンパイルしようとすると、リンカーは次のエラーをスローします。
error LNK2001: unresolved external symbol "public: static class std::vector<int,class std::allocator<int> > const Test::staticVector" (?staticVector@Test@@2V?$vector@HV?$allocator@H@std@@@std@@B)
ここで何が欠けていますか?