gpt4 book ai didi

c++ - 为什么在这种情况下不能访问基类的成员函数?

转载 作者:行者123 更新时间:2023-11-27 23:07:53 26 4
gpt4 key购买 nike

我很困惑,为什么我无法访问 void func(int i),有人可以帮助我吗?当然,这只是一个演示,可以帮助您轻松理解我的问题。其真正的代码量很大,我希望Base和Child中的成员函数都可用。

输出总是**

double
2

**

        struct base
{
void func(int i)
{
cout << "int" << endl;
cout << i << endl;
}
};

struct child : base
{
void func(double d)
{
cout << "double" << endl;
cout << d << endl;
}
};

child c;
c.func((int)2);

最佳答案

因为 child::func 隐藏 base::func

您需要通过将名称引入作用域使其在派生类中可见:

struct child : base
{
using base::func;
void func(double d)
{
cout << "double" << endl;
cout << d << endl;
}
};

或通过在调用站点限定名称来显式调用基本版本:

c.base::func(2);

关于c++ - 为什么在这种情况下不能访问基类的成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22143707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com