我有一个参数化类Queue和一个继承自Queue的子类ClientsQueue没有参数化。我想我有一个语法错误:
client.h
#ifndef CLIENT_H_
#define CLIENT_H_
class Client {
public:
Client();
~Client();
};
#endif
queue.h
#ifndef QUEUE_H_
#define QUEUE_H_
template <class T> class Queue {
public:
Queue();
~Queue();
};
#endif
clientsQueue.h
#ifndef CLIENTSQUEUE_H_
#define CLIENTSQUEUE_H_
#include "queue.h"
#include "client.h"
class ClientsQueue: public Queue<Client> {
public:
ClientsQueue();
~ClientsQueue();
};
#endif
clientsQueue.cpp
#include "clientsQueue.h"
ClientsQueue::ClientsQueue() {
};
bank.cpp
#include "clientsQueue.cpp"
int main() {
return 0;
}
因此,当我尝试编译并运行程序时,编译器说:
clientsQueue.cpp:3:1: error: ‘ClientsQueue’ does not name a type
ClientsQueue::ClientsQueue() {
^
我看不出错误。如果我退出clientsQueue.cpp
中的所有代码,它就会起作用。
我该如何解决?
谢谢!
答案 0 :(得分:0)
您应该在主文件中#include "clientsQueue.h"
而不是#include "clientsQueue.cpp"
。当您包含标头时,您向编译器提供声明。当您只包含源(cpp)文件时,您会错过类ClientsQueue
的声明。