i = I; }
                  
                  
                  };
                  
                  
                  
                  
                  
                  class B {
                  
                  
                  public:
                  
                  
                    A a;
                  
                  
                    B(int i) { a = A(i); } //Ошибка
                  
                  
                  };
                  
                  
                  
                  
                  
                  
                  
                  
                  Данный код выдает ошибку, что у класса A нет конструктора по умолчанию. А что если я не хочу, что-бы А существовало без заданной переменной внутри объекта, но ее я узнаю только во время создания класса Б? Неужели только так?
                  
                  
                  
                  
                  
                  class A {
                  
                  
                  public:
                  
                  
                    int I;
                  
                  
                    void setI(int i) { I = i; }
                  
                  
                  };
                  
                  
                  
                  
                  
                  class B {
                  
                  
                  public:
                  
                  
                    A a;
                  
                  
                    B(int i) { a = A(); a.setI(i); }
                  
                  
                  };
                  
                  
                  
                  
                  
                  А если I в классе А я не хочу дать изменить после его создания, из вне? Метод setI то еще доступен...
                  
                  
                  
                  
                  
                  Почему после C# в C++ так неудобно...
                  
                  
                
class A { public: A(int i) : I{i} { } private: int I; }; class B { public: A a; B(int i) : a{i} {} };
Обсуждают сегодня