Bonjour tout le monde,
Je n'arrive pas à comprendre pourquoi mon code suivant compile:
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Quelqu'un peut-il m'expliquer?
Merci
Partager