2014-09-23 3 views
0

Я следующий простой конструктор:класса конструктор с параметрами по умолчанию

Vector(double x=0, double y=0) : x(x), y(y) {} 

void operator+=(const Vector& other) { 
    this->x += other.x; 
    this->y += other.y; 
} 

Но когда я называю это, как этот

Vector b(); 
Vector a(1,1); 

и попытаться сделать + = Ь; компилятор дает мне много ошибок, говорящих, что операторов нет. Однако, когда мне это нравится: Вектор b (0,0); или Вектор b (0); все работает (((

+0

Почему вы думаете, что такой конструктор позволит использование '+ = '? Если вам нужен оператор, вам нужно перегрузить его. Это не имеет никакого отношения к конструкторам. Но в качестве побочного примечания вы должны сделать этот конструктор явным, или простые числа будут неявно преобразовывать в векторы как координаты x. –

+0

I есть оператор. Теперь я добавляю его ... – user3402740

+0

Кстати, 'this->' не нужно –

ответ

3

Vector b(); не создает объект. Он объявляет функцию.

Vector b; 
Vector a(1,1); 

должен работать.

+0

Отлично. Большое спасибо!!! – user3402740