[英]'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.