0
私のモノポリーゲームで私はベースクラスField
を持っています。クラスデザインと継承の問題
class Field {
protected:
int m_position;
public:
Field() { }
Field(int p_position) : m_position(p_position) { }
virtual void showProperty() const { std::cout << "Actuall output"; };
};
次のクラスがproperty.cppにフィールド
class Property : public Field {
float m_price;
public:
Property(int, float);
void showProperty() const;
};
から派生したプロパティです
Property::Property(int p_position, float p_price) : Field(p_position), m_price(p_price) { }
void Property::showProperty() const {
std::cout <<
"Position: " << m_position << "\n" <<
"Price: " << std::to_string(m_price) << "\n";
}
は今board.h
constexpr int BOARD_SIZE = 40;
class Board {
std::unique_ptr<Field[]> m_board;
public:
Board();
Field getField(int index) { return m_board[index]; }
};
とそのコンストラクタを見ることができます
0メインでBoard::Board() {
m_board = std::make_unique<Field[]>(BOARD_SIZE);
Property test(1, 100);
m_board[0] = test;
}
私はこの
int main() {
Board newBoard;
newBoard.getField(0).showProperty();
}
のようなものを作成して、私はそれがProperty::showProperty()
を呼び出すことを期待するが、それはField::showProperty()
を呼び出します。なぜ派生クラス関数を使用していないのですか?