2016-01-03 86 views
2

時,我仍然不知道爲什麼錯誤消息不斷試圖宣佈載體的情況下出現的 :錯誤聲明向量作爲一個類的數據成員

「未知類型名稱‘的setSize’」

#ifndef INTEGERSET_H 
#define INTEGERSET_H 

#include <vector> 
using namespace std; 

class IntegerSet 
{ 
public: 
    IntegerSet(); 
    IntegerSet(const int [], const int); 
    IntegerSet & unionOfSets(const IntegerSet &, const IntegerSet &) const; 
    IntegerSet & intersectionOfSets(const IntegerSet &, const IntegerSet &) const; 
    void insertElement(int); 
    void deleteElement(int); 
    void printSet(); 
    bool isEqualTo(const IntegerSet &); 

    const int setSize = 10; 
    vector<bool> set(setSize); 

}; 



#endif 

PS:爲了複製和粘貼上面的代碼,我不得不爲每一行添加4個空格,因爲它們都不符合格式。有更容易的方法嗎?

+0

關於你的PS:只需粘貼代碼,突出顯示它,然後按下Ctrl + K。 –

+0

我不明白這個關於在類聲明中初始化的時尚......這是Java開發人員做的事......爲什麼不使用初始化器列表/構造器? – basav

+0

@basav如果你有許多構造函數,它可以節省你輸入並減少錯誤的範圍。我也不會稱之爲「時尚」。這是該語言的一個非常有用的功能。 – juanchopanza

回答

7

這被解析爲函數聲明:

vector<bool> set(setSize); // function `set`, argument type `setSize` 

你需要一個不同的初始化語法:

vector<bool> set = vector<bool>(setSize); 

還要注意的是送東西的名字,如setusing namespace std;是一個非常餿主意。 using namespace std; is a bad idea in most cases anyway

+0

或者你也可以可以使用統一的初始化:'vector set {size}' –

+1

@Revolver_Ocelot這可能會導致一個大小爲1的矢量,其中單個元素設置爲「true」。 – juanchopanza