2013-07-14 39 views
3

我有一个微小的.h文件中:为什么我不能在.h文件中声明一个向量?

#include "stdafx.h" 
#ifndef BIGNUM_H 
#define BIGNUM_H 
#include <vector> 

class bignum{ 

private: 
    std::vector<int> num; 
    num.resize(4); 

}; 
#endif 

我收到以下错误信息:

  • 除外型speciefier
  • 该声明没有存储类或类型说明符

我错过了什么?

+3

矢量声明确定。调整大小是错误的。 [在一个C++头文件声明载体]的 – Pixelchemist

+0

可能重复(http://stackoverflow.com/questions/4230345/declaring-vectors-in-ac-header-file) – Mgetz

+2

@Mgetz,没有,这是一个不同的问题 – soon

回答

10

你不能调用一个成员变量的方法类的声明中。如果你想调整vector的大小,在类构造函数中(或者在另一个函数中,但构造函数是迄今为止最好的地方)。

在你的CPP文件,你可以这样做:

bignum::bignum() { num.resize(4); } 

或:

bignum::bignum(): num(4) {} 

第二个呼叫向量构造函数的尺寸参数。或者你也可以直接做在您的.h文件中:

class bignum{ 
    bignum(): num(4) {} // version 1 
    bignum(): num() { num.resize(4); } // version 2 

private: 
    std::vector<int> num; 
}; 
4

你不能叫num.resize(4);之外的功能。您可以在声明处使用您的类的构造函数或C++ 11初始化。

class bignum 
{ 
private: 
    std::vector<int> num = std::vector<int>(4); // C++11 
}; 

class bignum 
{ 
    bignum() : num(4) {} // C++03 and C++11 
private: 
    std::vector<int> num; 
}; 
+0

我得到了错误信息:除了a; 如果我使用表格std :: vector num {4}; – erbal

+2

@ user2351645你有相关的C++ 11支持吗?显然你需要这个。 – juanchopanza

+0

它应该创建一个大小为4的向量。据我所知。 – erbal

相关问题