这可能是一个相当简单和直接的答案,但由于某种原因,我看不到它。 我需要将调用方法从一个类中仅限制到由某些接口的派生类实现的某些方法。限制方法调用另一种方法
说我有
class A{
public:
static void foo();
};
class myInterface{
public:
virtual void onlyCallFooFromHere() = 0;
}
class myImplementation : public myInterface{
public:
virtual void onlyCallFooFromHere()
{
A::foo(); //this should work
}
void otherFoo()
{
A::foo(); //i want to get a compilation error here
}
}
所以我应该能够只从方法onlyCallFooFromHere()
有没有办法实现这个叫A::foo
?我愿意接受任何建议,包括更改班级设计。
编辑:
所以...我觉得有必要进一步解释这个问题。我有一个与数据库交互的实用程序类(主要更新记录) - 类A. 在我的接口(它代表一个基本的数据库对象)中,我具有从其中调用db实用程序类的方法的虚函数updateRecord()。我只想在所有扩展类的updateRecord()函数中更新数据库,而不是其他地方。即使不可能,我也不认为这是一个糟糕的设计选择。但是,如果确实不可能,我会感激不同的解决方案。
为什么你需要那个?看起来像一个可怕的设计。你可以让'A'成员为私人并且使用友谊,但是友谊是全班级的,你不能只允许'myImpl'中的一个成员来调用它,而另一个成员不能。 –
为什么你需要这样一个奇怪的类设计? – Nawaz
这与设计朋友类一样糟糕......我只想将私有/受保护的方法限制为其他方法而不是类。我可以扩展为什么我需要这个,但是对于我正在寻找的答案,它没有任何区别...... –