0

我有两个用户定义的类:

class A:class Base
{
type x;
doSomething();
}

class B
{
type x;
doSomething();
}

我还有一个函数,它获取一个 Base 类型的变量并用于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 从 Base 继承。

ps 我无权更改 Base

这怎么可能?

4

1 回答 1

3

在不安全的不相关类之间进行转换。实现我认为您正在尝试做的最安全的方法是使用函数模板:

template <typename T>
void foo(const T& b)
{
   b.doSomething();
}
于 2013-02-13T07:23:47.547 回答