У меня есть два определяемые пользователем классы:как я бросаю указатели определенных пользователем классов без использования наследования
class A:class Base
{
type x;
doSomething();
}
class B
{
type x;
doSomething();
}
У меня также есть функция, которая получает переменную типа базы и использовать dynamic_cast
, чтобы преобразовать его в тип A и используйте doSomething().
class D : class Base2
{
D(Base _base1):Base2(Base _base1)
{
//here is the actual problem
}
void foo()
{
//b is a private member of class Base2 of type Base
A *a=dynamic_cast(b);
A->doSomething();
}
}
, но я хочу передать B этой функции, и в то же время я не хочу B наследовать от базы.
p.s Я не имею доступ к изменению базы
, как это возможно?
У вас нет. См. [Строгое сглаживание] (http://stackoverflow.com/questions/98650/what-is-the-strict-aliasing-rule) для чего. – WhozCraig