Méthode constante et accesseurs
Bonjour tout le monde,
Je n'arrive pas à comprendre pourquoi mon code suivant compile:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #include <memory>
class AClass;
class Test
{
public:
Test();
void calc() const;
protected:
std::shared_ptr<AClass> m_attrib;
};
class AClass
{
public:
AClass () {};
void setValue(int i) { m_value = i; };
private:
int m_value;
};
Test::Test() : m_attrib(new AClass())
{
}
void Test::calc() const
{
m_attrib->setValue(42);
} |
Je suis sous VS 2010. Je ne vois pas comment c'est possible de modifier une valeur d'un attribut dans une méthode constante. Je sais que je ne modifie pas directement le pointeur de l'attribut mais je trouve ça quand étrange d'avoir ce comportement.
Quelqu'un peut-il m'expliquer?
Merci