我想做2个类,第一个是接口,应该在头文件中,第二个类是cpp文件,应该包括接口的实现。 我的意思是如果我声明一个头文件:LinkedList.h
class LinkedList{
public:
some methods...
private:
};
我想在C ++中实现这个linkedList类,我的问题是怎样的? 这种语法合法吗? (接口和实现具有相同的名称。)
#include "LinkedList.h"
class LinkedList : public LinkedList{
implementation of the header file...
}
答案 0 :(得分:1)
语法不合法,因为class
拼写为小写。
如果用“interface”表示它在Java中的含义,那么不,C ++没有等价物(最接近的是具有所有纯virtual
方法的类)。
如果你的意思是“类的定义”,那么是的,关闭你是怎么做的。您只需在实现文件中不需要额外的class ...
,就可以将方法实现为:
void LinkedList::method1()
{
}
答案 1 :(得分:0)
这种语法合法吗?
没有!使用class
关键字引入所有类声明的拳头(如
Luchian Grigore提到)。实现的语法是:
#include "LinkedList.h"
void LinkedList::MyMethod()
{
// Your implementation ...
}
注意:强>
你描述的只是一个简单的类声明和它的实现(定义)。如果你真的想要一个 抽象界面 ,那就不一样了。
在C ++中声明接口的最常用方法是提供纯抽象类:
<强> ILinkedList.h 强>
struct ILinkedList
{
virtual void addItem(Node& item) = 0;
// more methods ...
virtual ~ILinkedList() {}
};
然后将此包含在接口的实现声明中:
<强> LinkedList.h 强>
#include "ILinkedList.h"
class LinkedList : public ILinkedList {
public:
virtual void addItem(Node& item);
};
...并且有一个实现(定义):
<强> LinkedList.cpp 强>
#include "LinkedList.h"
void LinkedList::addItem(Node& item)
{
// Your implementation ...
}