Я пытаюсь создать класс для цветов в C ++,
это не домашнее задание, просто я все еще борюсь со ссылками и константой.
- Color.h
class Color{
private:
double r;
double g;
double b;
double a;
public:
//constructor, getters and setters...
Color& operator =(Color& other_color); //(1)
}
- Color.cpp
Color& operator=(Color& other_color){
this->r = other_color.get_r(); //line 41
this->b = other_color.get_b();
//and so on...
return *this;
}
вот так все работает нормально, но я слышал, что нужно добавить const, чтобы избежать того, что по ошибке объект будет изменен операцией присваивания,поэтому нужно объявить другой объект как const.Вот так:
Color& operator =(Color const& other_color); //(2)
но это дает мне такие ошибки:
/Users/../color.cpp:41: error: passing 'const Color' as 'this' argument of 'float Color::get_r()' discards qualifiers
так вот мой вопрос ...
что здесь происходит?во-вторых, что произойдет, если я не объявлю other_color как const?Каковы возможные ошибки?
PS .: маленький бонусный вопрос:
Я хочу передать свою переменную в opengl glColor4v (colorx.return_rgba ()), возвращая массив [r, g, b, a] класса Color.Это:
float* Color::return_rgba(){
float rgba[4] = {this->r, this->g, this->b, this->a};
return rgba;
}
не будет работать, потому что rgba больше не будет находиться в области видимости после возврата, поэтому он будет удален, и мой указатель укажет на неинициализированные адреса, черт ...