У меня есть два объекта, вызовите A
и B
например
class A {
private:
int x;
int y;
public:
A();
A(int x, int y);
void setX(int);
void setY(int);
};
class B {
private:
const A a1;
public:
B();
B(int x, int y) {
//my problem is here
A a(x, y);
this->a1 = a;
};
};
Если B
инициализируется с параметрами, я хочу, чтобы a1
также инициализировался с параметрами, которые B
инициализируется с помощью, следовательно, A(int x, int y)
.
Я не хочу, чтобы a1
инициализировался в куче.
В настоящее время я получаю эту ошибку
нетОператор "=" соответствует этим операндам: типы операндов: const Brain = Brain
Amend
Из ответа ниже @songyuanyao
B::B(int x, int y) : a1(x, y){};
itработает, но сейчас у меня другая проблема из-за недостатка знаний для const
.Когда я вызываю setX
и setY
из A(int x, int y)
следующим образом
A::A(int x, int y) {
setX(x);
setY(y);
}
void A::setX(int x) {
this->x = x;
}
void A::setY(int y) {
this->y = y;
}
, кажется, что он не меняет значения / атрибуты x
и y
класса A
.