我是C ++编程的新手,并且很难组织我的项目。 我有一个名为StateManager的类,它有一个头文件和一个cpp文件。 cpp包含所有实现。
如果我现在要创建一个Interface类:
class IStateManager
{
public:
virtual ~IStateManager() {}
virtual void SomeMethod {}
};
我知道接口并不像c#或Java那样存在,但是我希望多个类继承这个“接口”。
这个类是否还需要头文件和cpp文件?或者我可以把它放在头文件中吗?
答案 0 :(得分:4)
技术上,c ++没有接口。但是,可以通过多重继承来“创建”接口(如果您的类是“基类”并且不需要从多个类继承,则可以单继承)。你的“界面”生活完全取决于你。但是如果你计划使用一个类作为接口(没有任何实际的实现,因为技术上接口在子类中定义函数之前没有实现),我会把它放在它自己的头文件并声明每个函数纯虚:
class IStateManager
{
public:
virtual ~IStateManager() {}
virtual void SomeMethod() = 0;
virtual void AnotherMethod() = 0;
};
class TheState : public IStateManager, public SomeOtherParentClass
{
virtual void SomeMethod(); // Defined in this class
virtual void AnotherMethod(); // Also defined in this class
//..
};
如果要在{.1}}类的.cpp中定义一些实现,那么你真的有更多的抽象类而不是接口。
总而言之,我所说的是:“interface”的任何实现都应该在其实现类的.cpp文件中定义。如果您计划在多个文件中使用该接口,我会为它创建一个单独的.h文件。
答案 1 :(得分:0)
您可以将类方法的实现放在头文件中。这并不意味着你应该这样做。它也与这个“接口”类无关,就像你所说的那样。
顺便说一句,我不会把它称为接口类,因为你的virtual
方法并不纯粹。