我有一个带有声明为静态容器的类:
class test {
public:
test(const ClassA& aRef, const std::string& token);
test(const test& src);
~test();
private:
ClassA& m_ObjRef;
static std::vector<std::string> s_toks;
};
s_toks 容器在 test.cpp 中定义的构造函数中初始化如下:
std::vector<std::string> test::s_toks;
test::test(const ClassA& aRef, const std::string& token)
: m_ObjRef(aRef)
{
my_tokenize_function(token, s_toks);
}
test::test(const test& src)
: m_ObjRef(src.m_ObjRef)
{
/* What happens to s_toks; */
}
如果我不复制 s_toks,并且从新复制的对象访问 s_toks,它是空的。处理这个问题的正确方法是什么?