Я хотел понять, как работает встроенная переменная-член при доступе к ней через переменную-член const.Каждый раз, когда я пытаюсь это сделать, я получаю сообщение об ошибке!
Это то, что я пытаюсь
#include <iostream>
#include <string>
using namespace std;
class A{
public:
A()
{
_uuid = 0;
}
~A();
void setUUID(int n) { _uuid = n; }
inline int getUUID(){ return _uuid;} const
int getUUID1() const { return _uuid;}
int getUUIDsmart()const
{
return _uuid;
}
private:
int _uuid;
};
class B {
public:
B(){}
~B();
void fun1(const A *obj)
{
cout<<obj->getUUIDsmart()<<endl; //works fine
cout<<obj->getUUID1()<<endl; //works fine
cout<<obj->getUUID()<<endl; //error
A *obj1 = const_cast<A *>(obj);
cout<<obj1->getUUID()<<endl; //works fine
}
};
int main()
{
B *b = new B;
A *a = new A;
a->setUUID(12);
b->fun1(a);
}
Я могу заставить свой код работать через
const_cast
Но мне интересно знать, почему я получаю ошибку во встроенной функции, если я пытаюсь получить к ней доступ через функцию-член const?
Обновление: FIX
Мой плохой.Я испортил расположение const!Благодаря @ bruno
inline int getUUID() const { return _uuid; }
//correct syntax. i placed the const at the end