Eri*_*ric 0 c++ inheritance abstract-class c++11
是否有可能有一个抽象类,但FORCE实现类只有抽象类中的公共方法?
我不关心私有方法是如何工作的,但我想强制这些类只有一个公共方法.
例如,假设我有以下抽象类:
class MyObjectTransform
{
public:
virtual ~MyObjectTransform()
{
}
virtual MyObject transform(MyObject input) = 0;
};
Run Code Online (Sandbox Code Playgroud)
然后我想强制所有继承自的对象MyObjectTransform只有一个(构造函数除外)公共方法,transform.我不关心继承类有哪些私有方法.这可能吗?
更新: 此处的目标是强制开发人员仅通过单个方法公开功能.例如,考虑这种情况:
class ATransform
{
private:
MyObject A_Stuff(MyObject input);
public:
override MyObject transform(MyObject input)
{
return this->A_stuff(input);
}
};
class BTransform
{
public:
MyObject B_Stuff(MyObject input);
override MyObject transform(MyObject input)
{
return this->B_stuff(input);
}
};
Run Code Online (Sandbox Code Playgroud)
这里的问题是开发人员可以B_Stuff直接调用.我想阻止这个.
不,你不能.派生类可以定义他们想要的任何公共成员函数.没有办法限制它.
更新:
如果您不希望用户访问它,请将B_Stuff声明为私有.如果您希望从BTransform派生的类也可以使用它,则将其声明为受保护.
class BTransform
{
private:
MyObject B_Stuff(MyObject input);
Public:
override MyObject transform(MyObject input)
{
return this->B_stuff(input);
}
};
Run Code Online (Sandbox Code Playgroud)
但是你不能强迫用C++语言将B_Stuff声明为私有或受保护.必须将其定义为策略.
| 归档时间: |
|
| 查看次数: |
604 次 |
| 最近记录: |