В вашем объекте класса B у вас есть
A objectA;
То есть, когда конструктор по умолчанию вызывается, поэтому там вам необходимо либо иметь назначенный конструктор по умолчанию, или в качестве альтернативы вы можете использовать параметр по умолчанию, такие как
A(int inputA = 0) { a = inputA; }
Это будет взять на себя роль, что установить это число а 0, при вызове конструктора по умолчанию, это действительно было бы достичь такой же, как
хотя вам не нужно устанавливать a, если вы этого не хотите, но поскольку вы объявили конструктор не по умолчанию, он уже неявно создает его для вас. Таким образом, вы будете нуждаться в минимуме
A(){ }
Другим способом вы могли бы сделать это
class A {
int a;
void setSomething(int val) { a = val; }
};
class B {
A objectA;
B(A inputObjectA) { objectA = inputObjectA; }
};
Это работает, потому что вы никогда не объявляли любой конструктора, поэтому он будет неявно создать по умолчанию один для вас
Наконец, это один из способов, которым вы могли бы это сделать, вероятно, ближе всего к вашему исходному коду, добавив только 3 символа, должны исправить все:
class A {
int a;
A(int inputA) { a = inputA; }
};
class B {
A objectA(0);
B(A inputObjectA) { objectA = inputObjectA; }
};
Используйте список инициализаторов конструктора. – Drop