Отказ от ответственности: Я долго программист на C++, поэтому очень вероятно/возможно, что есть лучший способ сделать это.Функция переопределения в объекте-объекте
Я хотел бы создать class A
с 1 по N членов class B
. В большинстве случаев я нормально звоню в функции участника class B
. Однако в некоторых случаях я хотел бы переопределить функцию-член вclass B
. Есть ли элегантный способ сделать это без необходимости создавать производный класс от class B
каждый раз?
Вот пример:
using namespace std;
#include <iostream>
class B
{
public:
void print();
};
void B::print()
{
cout << "B::print" << endl;
}
class A
{
public:
B b;
B bprime;
};
int main()
{
A a;
a.b.print();
a.bprime.print();
return 0;
}
Есть ли способ, чтобы переопределить функцию print()
в bprime
или иным образом изменить его? В C я бы оставил class B
в качестве структурных и используемых указателей функций, но я хотел бы избежать этого.
Вывод из базового класса * есть * элегантный способ. – Bathsheba
Может быть, лучший способ сделать что-то для вашего дела, но нам нужно знать, что представляют классы. – TartanLlama
(1) Как вы хотите решить, когда назвать «премьер» печать? В зависимости от того, какой экземпляр, как в вашем примере? -> Наследование - путь. По другому условию? дайте нам знать. (2) есть ли у вас вектор/контейнер? в этом случае -> умные указатели, виртуальные функции. ** tl; dr ** нам нужно больше деталей. – peterchen