次のコードがあるとします。
#include <iostream>
class Person{
public:
Person(int age);
int get_a();
private:
int a;
};
Person::Person(int age)
{
a = age;
}
int Person::get_a()
{
return a;
}
void Show_Age(Person P)
{
std::cout<<P.get_a()<<std::endl;
}
int main() {
Person P(10);
Show_Age(P);
return 0;
}
ここで、重いオブジェクトがあるとすると、参照によってPersonを渡す必要があるため、次に進みます。
void Show_Age(Person &P)
{
std::cout<<P.get_a()<<std::endl;
}
問題はありませんが、良い観察はPがconstである必要があるということです、私たちはそれで試してみます:
void Show_Age(const Person &P)
{
std::cout<<P.get_a()<<std::endl;
}
コンパイラの失敗:
error: passing ‘const Person’ as ‘this’ argument of ‘int Person::get_a()’ discards qualifiers [-fpermissive]
それを解決する方法は?