簡體   English   中英

'myMethod'沒有類類型

[英]'myMethod' does not have a class type

我收到此錯誤50:23: error: 'd.Deck<T>::pullCard [with T = Card]' does not have class type

我對C ++很陌生。 第50行是對main()中d.pullCard的調用。 試圖使用我的Java知識來做到這一點,但是這種語言似乎更加嚴格。

二十一點

enum Suite { S, H, C, D };
string symbols[] = { "♠", "♥", "♣", "♦" };

class Card
{
    Suite suite;
    int value;

    public:
        Card(Suite s, int v) { suite = s; value = v; }
        Suite getSuite() { return suite; }
        int getValue() { return value; }
        string toString() { return symbols[suite] + " " + to_string(value); }
};

template <typename T>
class Deck : public vector<Card>{
    public:
        Deck(){
            for (int i = 0; i < 13; i++) push_back(Card(S, i+1));
            for (int i = 0; i < 13; i++) push_back(Card(H, i+1));
            for (int i = 0; i < 13; i++) push_back(Card(C, i+1));
            for (int i = 0; i < 13; i++) push_back(Card(D, i+1));
        }
        void shuffle(){
            srand(unsigned(time(0)));
            random_shuffle(begin(), end());
        }
        Card pullCard(){
            int index = rand() % 52 + 1;
            Card r = this[index];
            erase(index);
            return r;
        }
};

int main(){
    Deck<Card> d;
    d.shuffle();
    for (int i = 0; i < d.size(); i++) cout << d[i].toString() << endl;
    cout << d.pullCard.toString();
}

您沒有在調用pullCard函數。 您需要更改此:

d.pullCard.toString();

對此:

d.pullCard().toString();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM