如何使用重载函数运算符将元素添加到静态向量?
How to add elements to a static vector using an overloaded function operator?
所以我有一个带有重载函数运算符的简单 class。我也有一个静态向量。我试图通过函数运算符向向量添加值,但它似乎不起作用。
class ExampleClass
{
private:
static std::vector<std::string> exampleVector;
public:
void operator () (std::string input)
{
exampleVector.push_back(input);
}
};
int main()
{
ExampleClass exampleObject;
exampleObject("Hello World!");
}
我得到的错误是 "unresolved external symbol":
error LNK2001: unresolved external symbol "private: static class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > ExampleClass::exampleVector" (?exampleVector@ExampleClass@@0V?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@A)
我不知道什么意思。但是我的代码似乎没有 static
关键字也能正常工作。那我在这里错过了什么?谢谢
您还需要在 class 之外定义静态数据成员:
std::vector<std::string> ExampleClass::exampleVector;
所以我有一个带有重载函数运算符的简单 class。我也有一个静态向量。我试图通过函数运算符向向量添加值,但它似乎不起作用。
class ExampleClass
{
private:
static std::vector<std::string> exampleVector;
public:
void operator () (std::string input)
{
exampleVector.push_back(input);
}
};
int main()
{
ExampleClass exampleObject;
exampleObject("Hello World!");
}
我得到的错误是 "unresolved external symbol":
error LNK2001: unresolved external symbol "private: static class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > ExampleClass::exampleVector" (?exampleVector@ExampleClass@@0V?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@A)
我不知道什么意思。但是我的代码似乎没有 static
关键字也能正常工作。那我在这里错过了什么?谢谢
您还需要在 class 之外定义静态数据成员:
std::vector<std::string> ExampleClass::exampleVector;