안녕하세요 여러분,이 프로그램을 만드는 데 도움이 필요합니다. 우리는 g ++ (리눅스에서 퍼티를 서버로 사용)와 함께 작업하고 있습니다.이 연결된 목록에 많은 문제가 있습니다. 현재 제공되는 오류는 입니다. queue.cpp : 2 : 오류 : âusing 전에 unqualified-id가 필요합니다. 누구든지 알아낼 수 있는지 궁금합니다. 약간의 검색 결과는 문제가 #define 어딘가에있는 것처럼 보인다고합니다. ?? 오류는 .cpp 파일에 있지만 .h 파일에 있다고 생각합니다. 또한 만약 당신이 나에게 잘못된 것으로 보이거나 더 좋은 방법이 있다면, 어떤 프로그래밍 조언을 해줄 수 있다면.g ++에 대한 unqualified-id 오류가 발생했습니다.
여기
#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
queue.cpp 파일 아래 queue.h 파일.
#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);
}
코드를 조금 더 살펴본 후에는 "using namespace std;"가 포함되어 있기 때문입니까? 내 .h와 .cpp 모두에서 ?? – kingcong3