У меня есть этот класс Heap. Я пытаюсь иметь экземпляр кучи как частный член класса Graph, но это, похоже, не работает.Не удается создать экземпляр класса в другом классе
class Heap{
private:
Node* container;
int size;
//... some more attrs ...
public:
Heap(int inSize){
size = inSize
//... initialize other private attrs ...
}
class Graph {
private:
int size;
Heap h(90);
public:
Graph(int inSize){
size = inSize;
}
Посмотрев на этот пост, How to create an object inside another class with a constructor?, я до сих пор не могу понять, почему я не позволяют инициализировать вороха в пределах класса Graph. Я предполагаю, что частные члены не могут быть инициализированы, они просто заполнители, поэтому им не предоставляется физическая память. В одном из комментариев в этом сообщении говорится, что наличие указателя не является хорошей практикой.
Итак, мои вопросы: 1. Почему это не хорошая практика? если это действительно не очень хорошая практика. 2. Почему я не могу создать экземпляр другого объекта класса из частных атрибутов другого класса. 3. Есть ли другой способ, кроме указателя для решения этой проблемы? 4. Также кажется, что, если у меня нет пользовательского ctor и просто использую по умолчанию, он работает, опять же, я понятия не имею, почему.
Используйте списки член инициализатора в конструкторе. –
Вы можете уточнить, почему это не сработает? –
Потому что 'Heap h (90);' просто неверный синтаксис. –