Я пытаюсь отправить класс в качестве параметра конструктору, используя this
, и я делаю это в двух разных классах CasinoDealer
и Gambler
, поэтому на стороне получателя StandAction
У меня есть конструктор, который принимает 2 аргумента performer
и hand
.
Performer - это класс, но в качестве базового класса у меня есть аргумент, который CasinoDealer
и Gambler
оба наследуют; Player
базовый класс.
Я думал, что поскольку класс Gambler
или класс CasinoDealer
наследуют базовый класс Player
, я мог бы отправить класс, используя this
, а принимающая сторона должна иметь в качестве аргумента Player* performer
и знать какой класс, который создал объект, но, видимо, это не работает, так как мне это сделать?
Я пропустил некоторые включения и неважные функции, подобные этой, чтобы минимизировать количество отправленного кода.
Gambler.cpp
Action* Gambler::GetAction(int input) {
Action* action = nullptr;
switch (input) {
case 1:
action = new StandAction(this, new Hand());
break;
default:
break;
}
return action;
}
Player.h
class Player {
public:
virtual Action* DecideNextMove() = 0;
};
StandAction.h
class StandAction : public Action {
public:
StandAction(Player* performer, Hand hand);
void Execute();
};
StandAction.cpp
StandAction::StandAction(Player* performer, Hand hand) : Action(performer, hand) {
}
Жалуется, что ни один экземпляр конструктора не соответствует списку аргументов. Я подумал, что если класс, который я отправил, унаследован Player
, было бы хорошо передать его в качестве аргумента и иметь Player* performer
на стороне получателя.
C++ no instance of constructor matches the argument list
argument types are: (Gambler *, Hand *)