我想在一个类中创建一个静态矢量,并且我想在创建矢量时调整大小。我试图在构造函数或主函数中执行此操作。但我无法让它工作。问题是我不能通过这种方式调用vector类的函数。 这是我现在有:静态矢量调整大小
#include <vector>
using namespace std;
class test
{
public:
static vector<int> testvec;
test();
};
test::test() //Not static
{
test::testvec.resize(0); //Try 1
}
vector<int> test::testvec.resize(0); //Try 2
int main()
{
test::testvec.resize(0); //Try 3
test testclass;
system("pause");
return false;
}
我需要处理在每个对象的矢量的所有数据,这就是为什么我想要的矢量静态的。
有人可以帮助我吗? 谢谢!
编辑:语法。我尝试过的每种方法都会导致编译错误。
你确定你的方法是真正的最好的吗?如果你在某个时候需要两个独立的'test'对象组? 'shared_ptr'解决方案可能更好。 (静态数据有时可能很好,但它应该是const或者至少是const类似的;即一个对象做什么决不应该能够给其他对象造成问题,但调整为0看起来很麻烦。) – leftaroundabout 2012-02-03 18:49:48
您需要转发声明静态变量。在Try 1中没有这样的静态构造函数。在尝试2中,您不能全局调用静态成员的方法。在Try 3中,您将调用'.resize(0)'两次。如果你想在你的构造函数中清除(),那么静态成员可能不是必需的。另外,不要从main返回'bool',并避免一般的'system'。 – AJG85 2012-02-03 18:50:23
@ AJG85:您需要*定义*静态变量(以及所有变量,只是非外部声明也是大多数其他类型变量的定义)。你*不能转发declare *任何变量。 – 2012-02-03 18:59:36