В этом случае, я думаю, вам не нужно держать указатель. Дайте члену данных время автоматического хранения. Он будет построен, когда объект SymbolTable
, который его содержит, сконструирован и разрушен, когда объект SymbolTable
разрушен.
Иными словами, SymbolTable
полностью инкапсулирует и владеет объектом DynHashtable<string>
, который несет исключительную ответственность за контроль над его сроком службы.
Кроме того, в C++ вы должны использовать std::string
для представления строк (вы должны включить стандартный заголовок <string>
импортировать его определение:
#include <string>
class SymbolTable {
private:
DynHashtable<std::string> hst;
public:
SymbolTable() {
// ...
}
};
UPDATE:
Из комментариев, кажется, что DynHastable
не является конструктивным по умолчанию, и его конструктор принимает в качестве параметра int
. В этом случае вы должны построить свой объект в списке инициализации конструктора:
class SymbolTable {
private:
DynHashtable<std::string> hst;
public:
SymbolTable() : hst(42) {
// ^^^^^^^^^
// ...
}
};
Что такое ' DynHashtable'? – 0x499602D2
Всё зависит от меня. Если у вас есть указатель на экземпляр класса, вы можете контролировать его срок службы. Если у вас есть экземпляр класса как член другого класса, тогда время жизни этого экземпляра совпадает с временем жизни инкапсулирующего класса. –