Здравствуйте. Есть такой код:
#include <iostream>
struct A
{
int a;
int& getA()
{
std::cout << "non-const" << std::endl;
return a;
}
const int& getA() const
{
std::cout << "const" << std::endl;
return a;
}
};
int main(void)
{
A a = {0};
const int& i = a.getA();
std::cout << i << std::endl;
}
При выполнении на экран выводится «non-const». Мне нужно, чтобы при выборе перегруженного метода приоритет был у константного метода. Можно ли каким-нибудь костылём этого добиться?
Мне это нужно для Qt Implicit Sharing. В некоторых местах используются конструкции такого вида: «foo.getA() = 5», они должны использовать неконстрантный метод getA. Во всех остальных случаях желательно использовать константный метод.