我有一個微小的.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
- 該聲明沒有存儲類或類型說明符
我錯過了什麼?
我有一個微小的.h文件中:爲什麼我不能在.h文件中聲明一個向量?
#include "stdafx.h"
#ifndef BIGNUM_H
#define BIGNUM_H
#include <vector>
class bignum{
private:
std::vector<int> num;
num.resize(4);
};
#endif
我收到以下錯誤信息:
我錯過了什麼?
你不能調用一個成員變量的方法類的聲明中。如果你想調整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;
};
你不能叫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;
};
我得到了錯誤信息:除了a; 如果我使用表格std :: vector
@ user2351645你有相關的C++ 11支持嗎?顯然你需要這個。 – juanchopanza
它應該創建一個大小爲4的向量。據我所知。 – erbal
矢量聲明確定。調整大小是錯誤的。 [在一個C++頭文件聲明載體]的 – Pixelchemist
可能重複(http://stackoverflow.com/questions/4230345/declaring-vectors-in-ac-header-file) – Mgetz
@Mgetz,沒有,這是一個不同的問題 – soon