C++基础,派生类成员函数可见性

devinside 2009-07-01 11:27:17
class A
{
public :
func1 () ;
func2 () ;
};

class B : public?protected? A
{
};

B类只需要A类的func1函数,而希望func2函数是不可见的,该如何继承
A类中两个函数都必须是public的,B类对func1的需求和A类一样,不需要重写

再说明一下,希望func2是不可见的,即输入. 后面没有func2这个提示,不能重写一个func2什么都不实现,有类似的函数怕引起混淆,可不可以通过namespace什么的隐掉
...全文
129 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
devinside 2009-07-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ahao 的回复:]
恩,还有
class B : public A
{
private:
using A::func1;
};

也可以
[/Quote]

要的就是这个用法,不过后来又想了一下主要问题还是类设计上,还是提公共基类吧,不过多学一招也不赖,多谢各位关注
marrco2005 2009-07-01
  • 打赏
  • 举报
回复
同意这个
class A
{
public :
void func1 () {}
void func2 () {}
};

class B : A
{
public:
using A::func1;
};
int main()
{
B b;
b.func1();
//b.func2();编译错误
return 0;
}
shuihan20e 2009-07-01
  • 打赏
  • 举报
回复
两个派生类继承自两个不同的基类
ahao 2009-07-01
  • 打赏
  • 举报
回复

class B : public A
{
private:
using A::func2;
};
一分之千 2009-07-01
  • 打赏
  • 举报
回复
不可以,继承的概念就决定了你的这个想法是行不通的,期待高人。。。。。。
ahao 2009-07-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 akirya 的回复:]
B类只需要A类的func1函数
怎么说?
B b
b.func1()这样可以调用成功?
如果是这样的话 私有继承 + using

[/Quote]

恩,还有
class B : public A
{
private:
using A::func1;
};

也可以
  • 打赏
  • 举报
回复
B类只需要A类的func1函数
怎么说?
B b
b.func1()这样可以调用成功?
如果是这样的话 私有继承 + using
class A
{
public :
void func1 () {}
void func2 () {}
};

class B : A
{
public:
using A::func1;
};
int main()
{
B b;
b.func1();
//b.func2();编译错误
return 0;
}
oyljerry 2009-07-01
  • 打赏
  • 举报
回复
要么就把func2从A中拆出来,然后不继承..
或者就是定义为虚函数,自己实现空函数了,这样理解也不会混淆..
ahao 2009-07-01
  • 打赏
  • 举报
回复
class A
{
public :
void func1() {}
void func2() {}
};

class B : public A
{
private:
void func2() {}
};

调func2是编译不过的
zzlfe 2009-07-01
  • 打赏
  • 举报
回复
回帖是一种美德!每天回帖即可获得 10 分可用分!
fengrx 2009-07-01
  • 打赏
  • 举报
回复
func2 是public,
感觉实现不了吧。
smaltdd 2009-07-01
  • 打赏
  • 举报
回复
貌似继承不能实现你的需求,特别是你要求fun1和fun2都是public的。
allright1199 2009-07-01
  • 打赏
  • 举报
回复
很有难度啊。。
快乐鹦鹉 2009-07-01
  • 打赏
  • 举报
回复
如果是这种需求,那显然你这个继承关系就不成立。你这是在做强行继承,不如想想是否有其它的关系结构可以解决你的需求。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧