-3
別のクラスの別のメソッドの中でメソッドを呼び出そうとしていますが、 "variable deck is not type type"というエラーが表示されます。私はそれがどういう意味か分かりません。ここに私のコードは次のとおりです。別のクラスの2番目のメソッド内のメソッドを呼び出すC++
Cardstub.cpp
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <string>
#include <fstream>
#include <iostream>
#include "CardList.h";
#include "CardStub.h";
#define Ace 1
#define Jack 11
#define Queen 12
#define King 13
enum Suit { hearts, diamonds, clubs, spades };
void cardlist1(vector<Card1>);
void storeCard() {
int i = 0;
std::vector<Card1> deck(52);
std::vector<Card1> cardlist(52);
int temp;
for (Suit suit = hearts; suit <= spades; suit = Suit(suit + 1))
{
for (int rank = Ace; rank <= King; rank = rank++)
{
deck[i].suit = suit;
deck[i].rank = rank;
i++;
}
}
Card1 * CardList::addToTop(deck); //error is here
}
int main() {
storeCard();
system("pause");
return 0;
}
CardList.cpp
#include "CardList.h"
#include "CardStub.h"
#include <stdio.h>
void CardList::writeFile(FILE* File) {
}
void CardList::readFile(FILE *File) {
}
Card1 *CardList::addToTop(vector<Card1> deck) {
std::vector<Card1> cardlist(52);
cardlist = deck;
for (int count = 0; count <cardlist.size(); count++)
//For Loop to Display All Products
{
//cout << cardlist[count].rank << "\n" << cardlist[count].suit;
}
for (int i = 0; i < cardlist.size(); i++) {
if (cardlist[i].rank == 2)
cout << "Two ";
else if (cardlist[i].rank == 3)
cout << "Three ";
else if (cardlist[i].rank == 4)
cout << "Four ";
else if (cardlist[i].rank == 5)
cout << "Five ";
else if (cardlist[i].rank == 6)
cout << "Six ";
else if (cardlist[i].rank == 7)
cout << "Seven ";
else if (cardlist[i].rank == 8)
cout << "Eight ";
else if (cardlist[i].rank == 9)
cout << "Nine ";
else if (cardlist[i].rank == 10)
cout << "Ten ";
else if (cardlist[i].rank == 11)
cout << "Jack ";
else if (cardlist[i].rank == 12)
cout << "Queen ";
else if (cardlist[i].rank == 13)
cout << "King ";
else if (cardlist[i].rank == 1)
cout << "Ace ";
cout << "of ";
if (cardlist[i].suit == clubs)
cout << "Clubs\n";
else if (cardlist[i].suit == diamonds)
cout << "Diamonds\n";
else if (cardlist[i].suit == hearts)
cout << "Hearts\n";
else if (cardlist[i].suit == spades)
cout << "Spades\n";
}
}
/*
ICard* CardList::remove(int index) {
}
ICard* CardList::removeFromTop() {
}*/
CardStub.h
#include <stdio.h>
#define Ace 1
#define Jack 11
#define Queen 12
#define King 13
using namespace std;
struct Card1
{
Card1() {};
int rank;
Suit suit;
Card1(Suit s, int rank) {};
};
#endif
CardList.h
#if !defined(CARDLIST_H)
#define CARDLIST_H
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <string>
#include <fstream>
#include <iostream>
#include <stdio.h>
#include "CardStub.h"
class CardList {
public:
virtual void writeFile(FILE *File) = 0;
virtual void readFile(FILE *File) = 0;
virtual Card1 * addToTop(vector<Card1>) = 0;
//virtual ICard* remove(int index) = 0;
//virtual ICard* removeFromTop() = 0;
//public:
//virtual void removeCard(ICard*) = 0;
//virtual void add(ICard*) = 0;
};
#endif
エラーはCardStub.cppにありますが、なぜこのエラーが表示されるのですか?
「スイッチ」を使うことができますか、それともルックアップテーブルを使うことができますか? –
'CardList :: addToTop'は' static'メソッドではありません。 'CardList'インスタンスで呼び出す必要があります。それ以外は、再生できません。他のエラーが多すぎます。 – user4581301
教科書を解読して、純粋な仮想関数が何であるかを読んで、いつ使用するべきかを読んでください。 – user4581301