Static vector initialization in cpp file
我有个问题,我在class中的.h文件中声明了staticstringvector,
.h文件
1
| static std::vector<std::string> VHDSigBuffer; |
如何在我的class文件中使用这个vector函数实现?
在
my_class.h头段中
1 2 3 4 5 6
| class my_class
{
public:
// Declaration
static std::vector<std::string> VHDSigBuffer;
}; |
在my_class.cpp实施中
1 2
| // Definition
std::vector<std::string> my_class::VHDSigBuffer; |
现在您可以自由使用my_class::VHDSigBuffer。
- 谢谢,我已经这样做了,但是当把价值观推到它里面时,你能帮我吗?
- @Shafi您需要显示"推值"时使用的代码,并准确解释问题所在。别指望别人会猜到你遇到的问题。
- 在cpp文件class::myfunction()vectorvariable.push_back(mystring);但是当我调试代码时,我发现没有创建符号,所以什么也不会发生,但是代码会编译
- @Shafi这可能是静态初始化顺序的问题,但我需要看到更多的代码才能确定。特别是,我需要知道如何以及何时调用Class::MyFunction。我认为你应该对此提出一个新的问题,并发布更多的代码。
如果我明白你说的对,
如果你想在它自己的类中使用这个向量,你可以作为VHDSigBuffer访问它,或者如果你想在另一个类中使用它,你可以作为youClass::VHDSigBuffer访问它。
- 约翰:怎么会这样?类的static属性不能用于同一类的非静态方法中。我错了吗?
- 我想我们可以。静态成员在我们的类方法中使用之前必须全局初始化。
- 我试过了,但我错了,只是改变了我的答案。
您需要在cpp文件中实例化它,并使用如下行:
1
| std::vector<std::string> MyClass::VHDSigBuffer; |
这一行将在cpp文件中的任何函数定义之外。
- 谢谢,我已经这样做了,但是当把价值观推到它里面时,你能帮我吗?