attendu unqualified-id de l'erreur sur g++
Hé les gars, j'ai besoin d'aide pour faire ce programme pour la classe. Nous travaillons avec g++ (linux? grâce à ses mastic sur un serveur) j'ai beaucoup de problème avec cette liste liée. Le courant de l'erreur qu'il me donne de l'est
la file d'attente.rpc:2: erreur: attendu unqualified-id avant âusingâ
Demandais si quelqu'un pouvait m'aider à comprendre. Un peu de recherche montre que le problème semble être dans le #define quelque part?? l'erreur indique qu'il est dans l' .fichier cpp, mais je pense qu'il est dans le .h fichier. Aussi, si vous pouviez me donner toute la programmation de les conseiller sur tout ce qui semble éteint, mal ou si il y a une meilleure façon de le faire.
la file d'attente.h fichier ci-dessous
#ifndef QUEUE_H
#define QUEUE_H
template <class Object>
class Queue
{
public:
Queue();
Queue(const Queue& a_queue);
Queue& operator =(const Queue& rhs);
bool enqueue(const Object& d);
bool dequeue(const Object& d);
bool isEmpty() const;
~Queue();
private:
struct ListNode
{
Object obj;
ListNode *next;
};
ListNode *head;
}
#endif //Queue_H
#include "queue.cpp" //include queue.cpp with file
l'queue.cpp fichier ici.
#include <iostream>
using namespace std;
template <class Object>
Queue<Object>::Queue()
{
head = NULL;
}
template <class Object>
Queue<Object>::Queue(const Queue<Object>& a_queue)
{
head=NULL;
*this=a_queue;
}
template <class Object>
Queue<Object>& Queue<Object>::operator =(const Queue<Object> &rhs)
{
ListNode *nodePtr;
nodePtr = rhs.head;
if(this != rhs){
this.head = NULL;
while(nodePtr != NULL){
this.enqueue(nodePtr->obj);
nodePtr = nodePtr->next;
}
}
}
template <class Object>
bool Queue<Object>::enqueue (const Object& d) //Enqueue
{
ListNode *newNode;
ListNode *nodePtr;
ListNode *previousNode;
previousNode = NULL;
nodePtr = NULL;
newNode = new ListNode;
newNode->obj = d;
newNode->next = NULL;
if(isEmpty){
head = newNode;
return true;
}
else{
nodePtr = head;
previousNode = NULL;
while(nodePtr != NULL){
previousNode = nodePtr;
nodePtr=nodePtr->next;
}
if(previousNode->next == NULL){
previousNode->next = newNode;
return true;
}
else
return false;
}
}
template <class Object>
bool Queue<Object>::dequeue (const Object& d) //Dequeue
{
ListNode *nodePtr;
if(!head)
return false;
else{
if(head->next != NULL){
nodePtr = head;
d=nodePtr->obj;
head = head->next;
delete nodePtr;
}else
delete head;
return true;
}
}
template <class Object>
bool Queue<Object>::isEmpty() const //Check if Empty
{
if(!head)
return true;
else
return false;
}
template <class Object>
Queue<Object>::~Queue() //Destructor
{
Object temp;
while (head != NULL)
dequeue (temp);
}
OriginalL'auteur kingcong3 | 2011-04-07
Vous devez vous connecter pour publier un commentaire.
using namespace
dans un fichier d'en-tête.C'est ce que j'ai dit. Mettre le tout dans l'en-tête. Ou déplacer les définitions d'un modèle de fichier d'implémentation (.la cct ou similaire). Mais l'extension .le rpc est pour la mise en œuvre des fichiers, pas pour modèle de définitions.
Désolé, j'avais mal compris ce que tu voulais dire par votre déclaration. J'ai hésité à écrire mon commentaire, car j'ai pensé que vous saviez que sur les modèles. lol.
Je pensais que la copie de construire a été le soutien à une copie électronique et de l'affectation est de la copie en profondeur? est-ce faux??
Dans votre code, votre copie ctor est mis en œuvre dans les conditions de votre opérateur d'affectation. Il n'a pas d'effectuer une copie superficielle. Mais encore une fois, même si elle aurait, vous avez besoin de compte pour le cas où vous écrivez dans le
Queue
clone. Dans ce cas, les deuxQueue
objets pourrait changer si la copie est peu profond.OriginalL'auteur wilhelmtell
Vous avez besoin d'un point-virgule après votre déclaration de classe dans l'en-tête.
pas de problème
OriginalL'auteur jonsca