【问题标题】:how do I call the function from the upper class? the class is not inherited如何从上层类调用函数?该类没有被继承
【发布时间】:2021-03-08 01:02:36
【问题描述】:
class a{

private:
        class b* b = new b;
        int getSomeWhatValue(){
              
        }
};

class b{
private:
        void bFunc(){
               //I want to call an getsomewhatvalue() here
        }
};

我编写的代码非常简单。如何在 b 处调用 a 的函数?我尝试使用thispointer,但没有用:(

【问题讨论】:

  • 这是不可能的,因为class bclass a 一无所知。我建议重新考虑您的程序设计。

标签: c++ function class pointers


【解决方案1】:

您的场景将导致循环调用(即,A 的永无止境的循环创建了 B 的实例,而 B 的实例在 tern 中创建了 A 的实例并且循环继续),因此这是不允许的。

你有两个选择:

  1. 将“int getSomeWhatValue()”声明为静态,并通过类(而不是通过实例)调用它。
  2. 传递一个指向您要调用的函数的指针 (int getSomeWhatValue()) 并在 A 类或 B 类之外的某处删除原型。

【讨论】:

  • 你的意思是在选项2中使用这个指针吗?当我创建它时,我试图将 this 的指针指向 b,但没有奏效。您能详细解释一下选项 2 吗?
  • 我没有看到无限循环......对getSomeWhatValue() 的所需调用似乎在b 的成员函数中,而不是它的构造函数中。 (不过,想要做的事情似乎仍然不正确。
  • 不,你需要提供一个指向函数原型的指针
猜你喜欢
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-09
相关资源
最近更新 更多