class B { /* ... */ };
class A {
public:
A() { obj = NULL; }
private:
static B* obj;
};
Однако это производит огромную массу ошибок компоновщика, что символ OBJ является нерешенным.Определение частного статического члена класса
Что такое «правильный» способ иметь такой закрытый статический член класса без этих ошибок компоновщика?
Скорее всего, ему не нужно 'A() {obj = NULL; } 'then –
@ 7vies: не включая конструктор A изменит значение кода. В настоящее время построение нового объекта A сбрасывает статический член obj (что может быть важно). –
@Martin: Хотя я согласен с тем, что принятие инициализации статического члена из конструктора меняет поведение, мне любопытно, почему кто-то откроет себя для потенциальных утечек памяти, которые могут (и, вероятно, будут) вызваны. Если какой-либо объект A создает объект B в куче, при следующем создании объекта A объект B будет просочиться. –