我是 C++ 编程的新手,很难组织我的项目。 我有一个名为 StateManager 的类,它有一个头文件和一个 cpp 文件。 cpp 包含所有实现。
如果我现在想创建一个接口(interface)类:
class IStateManager
{
public:
virtual ~IStateManager() {}
virtual void SomeMethod {}
};
我知道接口(interface)并不像在 C# 或 Java 中那样真正存在,但我希望多个类继承自这个“接口(interface)”。
这个类还需要头文件和cpp文件吗?或者我可以将它放在头文件中吗?
最佳答案
技术上,c++ 没有接口(interface)。但是,可以通过多重继承(或单继承,如果您的类是“基”类并且不需要从多个类继承)来“创建”接口(interface)。您的“界面”所在的位置完全取决于您。但是如果你计划使用一个类作为一个接口(interface)(没有任何实际的实现,因为技术上一个接口(interface)在子类中定义函数之前没有实现),我会把它放在它自己的头文件并声明每个函数纯虚拟:
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
类定义一些实现,那么您实际上拥有更多抽象类而不是接口(interface)。
总而言之,我要说的是:“接口(interface)” 的任何实现都应该在其实现类的 .cpp 文件中定义。如果您计划在多个文件中使用该接口(interface),我会为其创建一个单独的 .h 文件。
关于c++ - 在 C++ 中放置接口(interface)类的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21118862/