[英]Where to put an interface class in c++
我是c ++编程的新手,并且很难组织我的项目。 我有一个名为StateManager的类,它有一个头文件和一个cpp文件。 cpp包含所有实现。
如果我现在想要创建一个Interface类:
class IStateManager
{
public:
virtual ~IStateManager() {}
virtual void SomeMethod {}
};
我知道接口并不像c#或Java那样真正存在,但是我希望多个类继承这个“接口”。
这个类还需要头文件和cpp文件吗? 或者我可以把它放在头文件中吗?
从技术上讲 ,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
//..
};
如果要在.cpp中为IStateManager
类定义一些实现,那么你真的有更多的抽象类而不是接口。
总而言之,我所说的是: “接口”的任何实现都应该在其实现类的.cpp文件中定义。 如果您打算在多个文件中使用该接口,我会为它创建一个单独的.h文件。
您可以将类方法的实现放在头文件中。 这并不意味着你应该这样做。 它也与你称之为“接口”类的事实毫无关系。
顺便说一下,我不会把它称为接口类,因为你的virtual
方法并不纯粹。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.