This should be virtual in any case. How is ownership of the ```_board``` member handled? Perhaps a ```std::shared_pointer<>``` would be appropriate here?