547 votes

erreur : demande de membre '... ' en '... ' qui est de type sans classe

J’ai une classe avec deux constructeurs, qui ne prend aucun argument et l’autre qui prend un argument.

Création d’objets en utilisant le constructeur qui prend un argument fonctionne comme prévu. Cependant, si je crée des objets à l’aide du constructeur qui ne prend aucun argument, j’obtiens une erreur.

Par exemple, si j’ai compiler ce code (avec g ++ 4.0.1)...

... J’obtiens l’erreur suivante :

Pourquoi est-ce et comment puis je le faire fonctionner ?

823voto

Mykola Golubyev Points 21210
<pre><code></code><p>mettre en place</p><pre><code></code></pre><p>Vous obtenez l’erreur car le compilateur pense</p><pre><code></code></pre><p>à partir de la déclaration de fonction avec le nom « foo2 » et le retour de type « Foo ».</p></pre>

42voto

ezdazuzena Points 1242

Juste pour les enregistrements...

En fait, il n’est pas une solution à votre code, mais j’ai eu le même message d’erreur lors de l’accès à la méthode d’une classe pointé par `` , par exemple

de toute évidence par corrigerait.

10voto

mHurley Points 279

L'ajout à la base de connaissances, j'ai eu la même erreur pour

if(class_iter->num == *int_iter)

Même si l'IDE m'a donné le bon membres pour class_iter. De toute évidence, le problème est qu' "anything"::iterator n'ont pas de membres appelés num donc j'ai besoin de déréférencement. Ce qui ne fonctionne pas comme cela:

if(*class_iter->num == *int_iter)

...apparemment. J'ai finalement résolu avec ceci:

if((*class_iter)->num == *int_iter)

J'espère que cela aide quelqu'un qui court à travers cette question de la façon dont je l'ai fait.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X