在 C++ 中,可以通过从私有实例化 class 调用方法而不重新实现它来覆盖虚拟方法吗?
Can in C++ override a virtual method by calling a method from a private instantiated class without reimplementing it?
抱歉更新了
我有一个 class A 覆盖了另一个 class B 的许多方法,在它旁边有一个 class B 的实例,我希望从中调用这些方法。 B 是一个带有虚方法的接口,所以它有一个通过指针传递给我的实现
IE。
class乙
class B{
public:
virtual int f1(int x);
virtual int f2(int x)
}
然后我有其他 classes 实现了 B,比方说 C、D 和 E,它们也有其他接口。
然后我有 class A,它有一个指向 class 的指针,除此之外还实现了 B。
我需要像下面这样重写这些方法
和class一个
class A:
public B
{
private:
B* b;
public:
A(B* _b){
b = _b;
}
int f1(int x) override
{
return b->f1(x);
}
int f2(int y) override
{
return b->f2(y);
}
}
是否可以通过允许编译器从实现中调用方法来避免覆盖每个方法?
如果你想在成员变量上调用f1()
和f2()
,那就不行。没有自动机制告诉编译器应该将对 A::f1()
的调用转发给 b->f1()
.
抱歉更新了
我有一个 class A 覆盖了另一个 class B 的许多方法,在它旁边有一个 class B 的实例,我希望从中调用这些方法。 B 是一个带有虚方法的接口,所以它有一个通过指针传递给我的实现 IE。 class乙
class B{
public:
virtual int f1(int x);
virtual int f2(int x)
}
然后我有其他 classes 实现了 B,比方说 C、D 和 E,它们也有其他接口。
然后我有 class A,它有一个指向 class 的指针,除此之外还实现了 B。
我需要像下面这样重写这些方法
和class一个
class A:
public B
{
private:
B* b;
public:
A(B* _b){
b = _b;
}
int f1(int x) override
{
return b->f1(x);
}
int f2(int y) override
{
return b->f2(y);
}
}
是否可以通过允许编译器从实现中调用方法来避免覆盖每个方法?
如果你想在成员变量上调用f1()
和f2()
,那就不行。没有自动机制告诉编译器应该将对 A::f1()
的调用转发给 b->f1()
.