С++Advanced, Task_03_Range - дифолтен ctor
Здравейте,
в main() имаме Range r; , което означава дифолтен ctor; Как да се разпише, като в класа Range има включен клас, който има ctor инициализиращ с const * към Range, знаем че константни полета се инициализират в инициализационния списък веднага и не се променят; За да инициализирам Range с дифолтен , няма как да знам пойнтера към range... ?
class ConstValueIterator {
const Range* range;
T currentValue;
size_t countRemaining;
public:
ConstValueIterator(const Range* range, T currentValue)
Поздрави!
Здравей, благодаря за отговора,
това добре, но не разбирам при вложени класове не се ли инициализират задължително и вложените, когато се инициализира основния, например: клас Person, включва клас Body; При инициализиране на Person, в ctor-a му не се ли вика задължително и ctor-a на Body.? A aко имахме const поле на Body, тогава как ще инициализираме дифолтно Person ако Body няма дифолтен ctor?
class Person {
class Body {
public: double heightMeters; double weightKgs;
Body(double heightMeters, double weightKgs) : heightMeters(heightMeters), weightKgs(weightKgs) { }
};
public: string name; int age = 0; Body body;
Person(string name, int age, double heightMeters, double weightKgs) : name(name), age(age), body(heightMeters, weightKgs) {
}
};
Привет,
Няма изискване вложените класове да бъдат инстанцирани едновременно с основния.
Потърси информация за nested classes в C++, а ако ти е интересно може да прочетеш и за The inner class idiom.