如何删除map<char, map<char, char>> board_game
、map<int, char> X_index
和list<Node*>
?
如何为类Tree
、Node
和Boardgame
编写适当的析构函数?
class Search_tree {
Node* root = nullptr;
char playerColor;
list<Node*> leaveNodes;
// Constructor, functions ...
~ Search_tree(); <--?
}
class Node {
Board_game* currentBoard = nullptr;
Node* parent = nullptr;
list<Node*> childs;
// Constructor, functions ...
~Node(); <--?
}
class Board_game {
public:
// Boardgame
map<char, map<char, char>> board_game;
map<int, char> X_index;
map<int, char> Y_index;
// Figures
Position figures[8];
// Constructor, functions ...
~Board_game(); <--?
}
struct Position {
char x;
char y;
};
1条答案
按热度按时间wydwbb8l1#
你需要决定谁拥有什么。然后你应该把那些“拥有”的原始指针转换成
std::unique_ptr
,这样你就不需要手工写析构函数了。一个可能的所有权结构可能是:由于
Board_game
不包含任何原始指针,因此它已经不需要手写的析构函数。