C++: la syntaxe pour accéder struct membre de pointeur de classe
Je suis en train d'essayer d'accéder à un membre des structures variables, mais je n'arrive pas à obtenir la syntaxe de droit.
Les deux erreurs de compilation pr. accès:
erreur C2274: "la fonction de style cast' : illégal côté droit de '.' opérateur
error C2228: la partie gauche de '.otherdata " doit class/struct/union
J'ai essayé différents changements, mais aucun succès.
#include <iostream>
using std::cout;
class Foo{
public:
struct Bar{
int otherdata;
};
int somedata;
};
int main(){
Foo foo;
foo.Bar.otherdata = 5;
cout << foo.Bar.otherdata;
return 0;
}
OriginalL'auteur Peter Ølsted | 2009-05-27
Vous devez vous connecter pour publier un commentaire.
Vous ne définissez struct là, de ne pas allouer un. Essayez ceci:
Si vous souhaitez réutiliser la structure dans d'autres classes, vous pouvez également définir la structure à l'extérieur:
Le code n'est pas exactement équivalent. Dans le premier exemple, le nom de la Barre struct est vraiment Foo::Bar.
Vous avez raison, Neil, édité ma réponse.
OriginalL'auteur schnaader
Bar
est la structure intérieure définie à l'intérieur d'Foo
. Création deFoo
objet n'est pas de créer implicitement laBar
's membres. Vous devez créer explicitement l'objet de la Barre à l'aide deFoo::Bar
syntaxe.Sinon,
Créer l'occurrence de la Barre en tant que membre dans
Foo
classe.OriginalL'auteur aJ.
Vous créez une structure imbriquée, mais vous ne créez jamais de toutes les instances au sein de la classe. Vous avez besoin de dire quelque chose comme:
Vous pourrez alors dire:
OriginalL'auteur
Vous êtes seulement en déclarant Foo::Bar, mais vous n'avez pas l'instancier (pas sûr si c'est de la bonne terminologie)
Voir ici pour l'utilisation:
OriginalL'auteur stefanB
Ici que vous venez de définir une structure, mais ne créé pas n'importe quel objet. C'est pourquoi, lorsque vous dites
foo.Bar.otherdata = 5;
c'est l'erreur du compilateur. Créer un objet de struct Bar commeBar m_bar;
et ensuite utiliserFoo.m_bar.otherdata = 5;
OriginalL'auteur Naveen