Bonjour,
Le C++ étant plus ou moins rétrocompatible avec le C, pourquoi ne peut-on pas écrire a->value à la place de *(a.value) ?
Plus concrètement, je ne comprends pas l’erreur de compilation à la ligne 39 :
#include <iostream>
using std::cout;
using std::endl;
class Entier2
{
public :
int* value;
explicit Entier2(int val = 10) {
value = new int(val);
}
~Entier2() {
delete value;
}
// Constructeur par copie
Entier2(const Entier2& original) {
value = new int(*original.value);
}
// Affectation par copie
const Entier2& operator=(const Entier2& original) {
if (this != &original)
*value = *original.value;
return *this;
}
};
int main()
{
Entier2 a(20);
cout << *(a.value) << endl;
cout << a->value << endl; // error: base operand of ‘->’ has non-pointer type ‘Entier2’
return 0;
}
Merci et joyeuses fêtes !
+0
-0