I'm making a chess game, and I'm laying out the classes. It makes sense to have a base Piece class, and separate Rook, Bishop, Knight, Pawn, King, and Queen classes to inherit from it. The only parameter the constructor will need is a boolean "owner" value (which will be a member of the base class): true for player, false for AI. I think the objects should be instantiated like this:
//create a Rook owned by the player Rook exampleRook = new Rook(true); //create a Knight owned by the AI Knight exampleKnight = new Knight(false); It seems like I would have to do something like this in each derived class:
Rook(bool owner) { this->owner = owner; } Which seems to violate the whole principle of inheritance: write code once in the base class, and then inherit. I might have to write a setOwner() function in the base class, but it seems to make more sense to set the owner in the constructor instead of in a separate function (which could be called again).