2010-12-08 148 views
0

我注意到我可以在一個向量中放置一個類;這是我的計劃,在那裏我收到以下錯誤:在一個向量中放置一個類對象?

/out:blackjack.exe 
blackjack.obj 
blackjack.obj : error LNK2019: unresolved external symbol "private: static class 
std::vector<class Card,class std::allocator<class Card> > Card::Cards" ([email protected] 
[email protected]@[email protected]@@[email protected]@@@[email protected]@@[email protected]@A) referenced in functio 
n "public: static void __cdecl Card::blankCard(void)" ([email protected]@@SAXXZ) 
blackjack.exe : fatal error LNK1120: 1 unresolved externals 

問題是'blankcard()函數,在那裏我試圖創建一個新的類的實例,並把它放到裏面載體。

有人可以閱讀代碼告訴我我的問題,並給我一個很好的例子,在如何做到這一點?謝謝。

#include <iostream> 
#include <vector> 
#include <string> 
using namespace std; 

class Card 
{ 
    private: 
    string suit; 
    int number; 
    static vector<Card> Cards; 

    public: 
    Card::Card(); 
    Card::Card(string cardS, int cardV); 
    static void createCards(); 
    static void blankCard();  
}; 


int main() 
{ 
    Card::blankCard(); 
    return 0; 
} 

Card::Card(){}; 
Card::Card(string cardS, int cardV){}; 

void Card::blankCard() 
{ 
    int temp = 1; 
    int cardValue; 
    string suit; 
    int suitCount = 1; 

    for(int i = 1; i < 52; i++) 
    { 
    if(temp == 1 || temp > 13) 
    { 
     temp = 1; 
     cardValue = temp; 
     temp ++; 
    } 
    else if(temp > 1) 
    { 
     cardValue = temp; 
     temp ++; 
    } 

    if(suitCount <= 13) 
    { 
     suit = "spade"; 
     suitCount++; 
    } 
    else if(suitCount >= 14 && suitCount <= 26) 
    { 
     suit = "club"; 
     suitCount++; 
    } 
    else if(suitCount >= 27 && suitCount <= 39) 
    { 
     suit = "heart"; 
     suitCount++; 
    } 
    else if(suitCount >= 40 && suitCount <= 52) 
    { 
     suit = "diamonds"; 
     suitCount++; 
    }  

    Card a = Card(suit, cardValue); 
    Cards.push_back(a); 
    } 
} 
+0

您仍然可以從命令提示符複製錯誤。如果是窗口,右鍵單擊,選擇'標記',選擇塊,按回車,然後粘貼到這裏。 – birryree 2010-12-08 18:18:24

+0

@birryree謝謝!!! – TimothyTech 2010-12-08 18:21:32

回答

7

您在聲明類定義靜態成員Cards,但你是不是在任何地方定義它。在類定義之後添加一個定義:

vector<Card> Card::Cards; 
2

您必須將該向量實例化爲靜態。基本上,你想要的東西是這樣的:

std::vector<Card> Card::Cards; 

在你的代碼的某處。

1

您的卡片矢量被定義爲靜態。這意味着它實際上是一個你必須定義的全局變量。這可以通過將以下的Card類定義後進行:

std::vector<Card> Card::Cards(); 
1

你有實際申報的載體。

相關問題