У меня есть класс (B), который наследует другой класс (A). Я хочу вызвать функцию из класса А, которая была переопределена. Я также хочу иметь возможность вызывать переопределенную функцию независимо от того, какой класс унаследовал базу (скажем, class C : public A
, где я хочу вызвать версию функции на языке C.)
Вот пример
class A {
public:
void callF();
virtual void f() {};
};
class B : public A {
public:
void f();
};
void A::callF()
{
//FYI, I want to be able to call this without knowing what the super class is.
f();
}
void B::f()
{
std::cout << "I want this function to be called, but instead the default f() is called.";
}
Edit:
В моем реальном коде у меня есть std::vector<A> aVector;
. Тогда я бы позвонил aVector.push_back(B());
. Если бы я позвонил aVector[0].callF();
, было бы вызвано значение по умолчанию a::f()
.
Как показано ниже, у меня проблема с нарезкой.