имеется пример:
#include <iostream>
using namespace std;
class Number
{
private:
int number = 0;
public:
int getNumber ()
{return number;}
void setNumber(const int number)
{
this->number = number;
}
Number & operator= (const Number &number)
{
this->number = number.number;
return *this;
}
};
class TwoNumbers
{
private:
Number num1, num2;
public:
void getNumbers(Number &num1, Number &num2)
{
num1 = this->num1;
num2 = this->num2;
}
void setNumbers (const int num1, const int num2)
{
this->num1.setNumber(num1);
this->num2.setNumber(num2);
}
};
void upup (const TwoNumbers &numbers)
{
Number a,b;
numbers.TwoNumbers::getNumbers(a,b);
cout << a.getNumber() << endl << b.getNumber() << endl;
}
int main()
{
TwoNumbers c;
c.setNumbers(1,2);
upup(c);
return 0;
}
в таком виде выдает ошибку:
../Test/main.cpp:49:39: error: passing ‘const TwoNumbers’ as ‘this’ argument discards qualifiers [-fpermissive]
numbers.TwoNumbers::getNumbers(a,b);
^
если в функции upup() поставить входящий параметр не константу, то все начинает работать...
однако, мне необходимо, что бы данный параметр не изменялся, т.к. он же передан по ссылке.
не могу понять почему так происходит?
и еще — почему то если константу не убирать в параметре описания функции, то qt creator отказывается видить методы данного объекта (const TwoNumbers &numbers), однако видит их через два двоеточия и класс.