2010-12-08 144 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

你有实际申报的载体。

相关问题