静态向量调整大小

时间:2012-02-03 18:28:57

标签: c++ vector constructor resize main

我想在类中创建一个静态向量,我想在创建向量时调整它们的大小。我试图在构造函数或main函数中执行此操作。但我无法让它发挥作用。问题是我不能以这种方式调用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;

}

我需要处理每个对象中矢量的所有数据,这就是我想让矢量静态的原因。

有人可以帮我吗? 谢谢!

编辑:语法。我尝试的每个方法都会产生编译错误。

2 个答案:

答案 0 :(得分:3)

当您声明静态成员属性时,您还需要定义它:

class test {
public:
   static std::vector<int> v; // declaration
};
std::vector<int> test::v; // definition, note: no `static` here

您可以选择使用构造函数的大小,这样就不需要调整大小:

std::vector<int> test::v( 10 ); // definition, create it with size==10

但如果您愿意,仍然可以从main调用调整大小:

int main() { 
   test::v.resize( 20 );
}

答案 1 :(得分:1)

您需要在实现文件中定义静态成员。

就像在main.cpp中一样:

vector<int> Test::testvec;

int main() {
 ...
}