使用参数化类继承

时间:2014-06-15 15:08:42

标签: c++ inheritance syntax-error

我有一个参数化类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中的所有代码,它就会起作用。

我该如何解决?

谢谢!

1 个答案:

答案 0 :(得分:0)

您应该在主文件中#include "clientsQueue.h"而不是#include "clientsQueue.cpp"。当您包含标头时,您向编译器提供声明。当您只包含源(cpp)文件时,您会错过类ClientsQueue的声明。