c++ - 如何在不进行类型转换和使用多态性的情况下使用基类指针调用派生类非虚成员函数?

标签 c++ c++11

有什么方法可以使 ptr->fun2() 成为可能吗?

 class A
    {
        void fun1()
        {
             A* ptr;
             ptr->fun2();
         }
    }

    class B : class A
    {
        void fun2()
        {
        }
    }

最佳答案

那是不可能的。 C++ 是一种静态类型语言。 ptr 的类型是指向A 的指针。 fun2 不是 A 的成员。根据定义,不可能通过指向类型 A 的指针/引用来调用 fun2

这通常可以通过转换来解决。由于您出于不明原因取消了资格,因此无法执行您想要的操作。

关于c++ - 如何在不进行类型转换和使用多态性的情况下使用基类指针调用派生类非虚成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35296356/

相关文章:

c++ - 在 Visual C++ 中使用时 curl 错误

c++ - 实例化类时出现不完整的类型错误

c++ - 对 Variadic 模板与 Visual Studio 2010 的混淆

c++11领带名称与boost冲突

c++ - 如何检查 std::vector<std::string> 的元素是否以某个子字符串开头?

c++ - 为什么 gdb "u"命令不退出循环?

c++ - 堆栈溢出或指针错误?

c++ - 使用步骤 c++ 构建 vector

c++ - std::is_constructible<T, Args> 是如何实现的?

c++ - 没有 <> 的模板特化