2013-07-14 40 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

相關問題