我正在尝试将 ac# 项目转换为 c++。我正在尝试以下操作:
class IDocInterface
{
public:
// implemented in CSpecificDoc
virtual bool CreateDoc() = 0;
// implemented in COperations
virtual void AddOperation() = 0;
// implemented in CDoc
virtual void Save() = 0;
};
class COperations
{
public:
void AddOperation() {}; // implementation for CDoc and derivates
};
class CDoc : public IDocInterface, public COperations
{
public:
void Save() {}; // implemented here
};
class CSpecificDoc : public CDoc
{
public:
bool CreateDoc() {}; // implemented here
};
当我尝试这样做时:
IDoc * pDoc = new CSpecificDoc();
由于以下成员,我收到错误 c2259 无法实例化抽象类:void IDocInterface::AddOperations() 是抽象的。
不知道我错过了什么。
我的继承结构在 c# 中工作得很好,我使用“interface IDocInterface”和“abstract class CDoc”。
解决方案:
添加:
class IOperations
{
public:
virtual void AddOperation() = 0;
}
然后将上面的更改为:
class IDocInterface : public virtual IOperations
{
public:
// implemented in CSpecificDoc
virtual bool CreateDoc() = 0;
// implemented in CDoc
virtual void Save() = 0;
};
和
class COperations : public virtual IOperations
不过,我认为在没有 IOperations 类的情况下,整个事情在 C# 中运行得这么好,这有点奇怪......