2012-08-23 68 views
0

我已經定義了一個簡單的類C++矢量和錯誤「無重載的函數的實例」

#pragma once 
#include "aSuit.h"; 
class Card 
{ 
private: 
    aSuit theSuit; 
public: 
    Card(void); 
    ~Card(void); 
    aSuit getSuit(); 
    void setSuit(aSuit theSuit); 
}; 

然後,定義了一個矢量

vector<Card> theCards; 

後來想上推卡

theCards.push_back(new Card()); 

我去編譯錯誤「沒有重載函數的實例」。

vector.push_back使用字符串的矢量,但與我定義的類無關。我正在使用Visual C++ 2010.請幫助。

+4

你不需要用'new'在C++中創建對象。 –

+1

我喜歡visual studio class wizard如何在參數列表中粘貼'void'。 –

+0

你應該真的使用包括守衛。 –

回答

6
vector<Card> theCards; 

這創建了一個向量Card

theCards.push_back(new Card()); 

這假定你有一個「指向Card的指針」的向量。

「指針Card」和「Card」是而不是是同樣的事情。你的意思是說:

theCards.push_back(Card()); 
+3

或者更簡單一點,'theCards.emplace_back();'或'theCards.resize(theCards.size()+ 1);'。 –

+0

感謝您的幫助。 – user442920