demande de membre de type non classe

j’ai eu cette erreur et je ne suis pas capable de résoudre tout seul

source.cpp:85:8: error: request for member 'put_tag' in 'aux', which is of non-class type 'Keyword()' source.cpp:86:8: error: request for member 'put_site' in 'aux', which is of non-class type 'Keyword()' make: *** [source.o] Error 1 

le code qui me donne cette erreur est

 Keyword aux(); aux.put_tag(word); aux.put_site(site); 

Je dois mentionner que le mot et le site sont char * type

Maintenant, ma définition de classe de mots-clés est celle-ci:

 class Keyword{ private: std::ssortingng tag; Stack weblist; public: Keyword(); ~Keyword(); void put_tag(std::ssortingng word) { tag = word; } void put_site(std::ssortingng site) { weblist.push(site); } }; 

Merci beaucoup!

Mettre à jour

En modifiant

 Keyword aux(); aux.put_tag(word); aux.put_site(site); 

dans

 Keyword aux; aux.put_tag(word); aux.put_site(site); 

j’ai eu cette erreur:

 source.o: In function `Algorithm::indexSite(std::basic_ssortingng<char, std::char_traits, std::allocator > const&)': source.cpp:(.text+0x2c6): undefined reference to `Keyword::Keyword()' source.cpp:(.text+0x369): undefined reference to `Keyword::~Keyword()' source.cpp:(.text+0x4a8): undefined reference to `Keyword::~Keyword()' source.o: In function `Keyword::put_site(std::basic_ssortingng<char, std::char_traits, std::allocator >)': source.cpp:(.text._ZN7Keyword8put_siteESs[Keyword::put_site(std::basic_ssortingng<char, std::char_traits, std::allocator >)]+0x2a): undefined reference to `Stack<std::basic_string<char, std::char_traits, std::allocator > >::push(std::basic_ssortingng<char, std::char_traits, std::allocator >)' collect2: ld returned 1 exit status make: *** [tema3] Error 1 

Cette ligne ne fait pas ce que vous pensez:

 Keyword aux(); 

Déclare une fonction appelée aux qui ne prend aucun argument et retourne un KeywordKeyword . Vous vouliez probablement écrire (sans les parenthèses):

 Keyword aux; 

Qui déclare un object de type Keyword .

METTRE À JOUR:

En ce qui concerne la prochaine erreur que vous obtenez, c’est parce que vous avez une déclaration du constructeur et du destructeur de votre classe, mais pas une définition . En fait, l’erreur que vous obtenez provient de l’ éditeur de liens et non du compilateur.

Pour fournir une définition sortingviale de votre constructeur et de votre destructeur, changez ceci:

 Keyword(); ~Keyword(); 

Dans ceci:

 Keyword() { } ~Keyword() { } 

Ou, tant que ces fonctions membres ne font rien, omettez-les simplement du tout – le compilateur les générera pour vous (sauf si vous ajoutez un autre constructeur déclaré par l’utilisateur, en ce qui concerne le constructeur).

Pas ça

 Keyword aux(); aux.put_tag(word); aux.put_site(site); 

mais ça

 Keyword aux; aux.put_tag(word); aux.put_site(site); 

Dans votre version, Keyword aux(); est un prototype de fonction et non une déclaration de variable.

J’ai eu le même problème lorsque j’ai tapé le code suivant dans ma fonction principale, j’ai un fichier List.h et List.cpp contient ma classe List.

 List myList(); bool x=myList.isEmpty(); 

Je reçois une erreur “requête pour le membre ‘isEmpty” dans “myList”, qui est de type non-classe’ List () ‘”

l’erreur est due au fait que le compilateur considère myList () comme un prototype de fonction

quand je corrige le code pour être

 List myList; bool x=myList.isEmpty(); 

J’ai eu l’erreur “référence indéfinie à` List :: List () “et quelques erreurs similaires pour le destructeur.

Suite à l’examen de mon code et de mes réponses dans cette page, j’ai constaté que je devais inclure mon fichier List.cpp dans le fichier main.cpp. Cependant, j’ai inclus List.h dans mon fichier List.cpp, mais il semble que cette information doit être communiquée à le fichier principal aussi. La suite de la lecture de ce didacticiel explique pourquoi, si je comstack le projet sans inclure List.cpp, il comstackra correctement car le fichier List.h a le prototype, mais il échouera au stade de l’éditeur de liens car il ne pourrait pas résoudre l’appel à List () à une fonction spécifique.