2015-08-21 2 views
-3

Исходя из Java, я уже привык к возможности включают в себя классы, которые я сделал в других классах, например:C++ динамически инициализирован

class Pepperoni{ 

} 

class Pizza{ 
    Pepperoni pepperoni; 
    Cheese cheese; 
} 

Однако в C++, кажется, интерпретировать то, что я вижу как объявления, а вместо этого: вызовы функций для инициализации класса «Pepperoni» с использованием конструктора по умолчанию с пустыми параметрами.

Что я хочу сделать, так это создать класс Pizza и инициализировать переменные-члены «Pepperoni» и «Cheese», взятые из ввода на его конструкторе. т.е. что-то вроде:

Pizza::Pizza(Pepperoni pepperoni, Cheese cheese){ 
    this.pepperoni = pepperoni; 
    this.cheese = cheese; 
} 

Это как раз желаемое за действительное? Должен ли я делать это по-другому? Я упустил замечательную особенность C++?

Спасибо!

+0

Какова ваша фактическая проблема? Вы просто попробовали? Должен работать нормально. –

+0

Я люблю пиццу, собираюсь заказать один прямо сейчас –

+2

'this' является указателем на объект в C++, поэтому используйте' this-> cheese = cheese; 'или используйте другое имя для ввода:' cheese = newCheese; ' – stefaanv

ответ

0

Это работает по-разному в Java и C++. Хотя в Java все, что у вас есть, являются ссылками на объекты с кучей, на C++ то, что вы написали, является самим объектом OBJECT, а не ссылкой на него. Я предлагаю вам прочитать некоторые материалы по основам C++ OOP, чтобы лучше понять это. Например, вы можете прочитать это и следовать ссылкам на другие вопросы, заданные в этом вопросе: C++ Pointer Objects vs. Non Pointer Objects