2012-10-11 76 views
0

我有一個類似基本堆棧的類。在我的成員函數定義中,我在vec的每個實例中都會得到一個錯誤。該錯誤告訴我表達式必須具有類類型。我必須做些什麼來解決這個問題?向量表達式必須具有類類型

class Stack{ 
    public: 
     Stack(); 
     Stack & push(double & t); 
     double pop() const; 
     unsigned long long getElements(); 
    private: 
     vector <double> vec[10]; 
     static double answer; 
}; 

Stack::Stack(){ 
    answer=0; 
} 

Stack & Stack::push(double & t){ 
    vec.push_back(t); 
    return *this; 
} 

double Stack::pop()const{ 
    return vec.pop_back(); 
} 

unsigned long long Stack::getElements(){ 
    return vec.size(); 

} 

回答

2

有一些問題在這裏,和更正後我得到:

#include <vector> 
using namespace std; 
class Stack{ 
    public: 
     Stack(); 
     Stack & push(double & t); 
     double pop(); 
     unsigned long long getElements(); 
    private: 
     vector <double> vec; 
     static double answer; 
}; 

Stack::Stack(){ 
    answer=0; 
} 

Stack & Stack::push(double & t){ 
    vec.push_back(t); 
    return *this; 
} 

double Stack::pop(){ 
    double ret = vec.back(); 
    vec.pop_back(); 
    return ret; 
} 

unsigned long long Stack::getElements(){ 
    return vec.size(); 

} 

我所做的改變是:

  1. 失蹤包括矢量和命名空間默認性病。
  2. pop_back返回void - 需要先返回元素。
  3. 不應將pop聲明爲const,因爲它確實會更改向量(您可以使返回的值爲常量)。
  4. 刪除[10] vec聲明。它不是C數組。
+0

thx我做了編輯,但仍然不能解決問題:/任何想法? – Painguy

+0

我沒有在「g ++ -c x.cpp」上得到任何錯誤。你能發佈錯誤信息嗎?此外,我忘了提及我在聲明中刪除了[10] - 這不是如何聲明大小。 – Jonathan

+0

刪除[10]修復了錯誤:P thx哈哈 – Painguy

相關問題