【问题标题】:Inheritance in C++ ,How to call specific function from class [closed]C ++中的继承,如何从类中调用特定函数[关闭]
【发布时间】:2020-10-02 09:59:11
【问题描述】:

在这个程序中如何访问子类中的特定功能。

Class A
{
  Private:
  Int variables,....;
  Protected:
  Void funA{

                      };
Void funB{

                      };

Void funC{

                      };
};

Class B :public class A
{
   funC();///Here I want to access only function funC() and FunA() & FunB() should not access..
};

现在在 C 类中,A 类的所有函数都应该访问..

Class C :public class A
{
funA();
funB();
funC();. //// All functions should be Access..
};

我该怎么做.....

【问题讨论】:

  • C++ 区分大小写。关键字classvoidintprivateprotected 必须全部小写。 FunAfunA 不同。
  • 我知道,这不是完美的代码,它只是参考......
  • 你试过了吗?你的实际问题是什么?你有错误吗?
  • @user13734955 不幸的是,我们的代码是由各种能力的人发布的,并且代码经常包含严重错误。这使得很难知道什么是“不完美的代码”,什么是真正的错误。如果您希望您的问题得到最好的答案,请不厌其烦地发布准确的代码。
  • 您是想说,给定一个对象B obj,您希望能够调用obj.funC(),但不能调用obj.funA()obj.funB()? (即你想违反Liskov substitution principle?)代码当前传达了一些不同的东西,你想从B的定义中调用funC()(这没有意义)。

标签: c++ function class inheritance multiple-inheritance


【解决方案1】:

鉴于您拥有这三个类,您可以使用 friend 关键字将 C 类标记为可以访问 A 类的私有成员和受保护成员。

class A
{
public:
    void FunC() {};

private:
    friend class C;

    void FunA() {};
    void FunB() {};
};

class B : A
{
public:
    B()
    {
        FunC();
    }
};

class C : A
{
public:
    C()
    {
        FunA();
        FunB();
        FunC();
    }
};

您可以查看此页面以获取更多详细信息:
https://www.geeksforgeeks.org/friend-class-function-cpp/

【讨论】:

    猜你喜欢
    • 2014-08-06
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    相关资源
    最近更新 更多