小编Joh*_*ski的帖子

将成员函数作为参数传递给其他成员函数(C++ 11 <function>)

假设我有一个包含三个成员函数的类,如下所示:

#include <iostream>
#include <functional>

class ClassName
{
  public:
    double add(double a, double b);
    double intermediate(double a, double b, std::function<double (double,double)> func);
    double combiner(double a, double b);
};

double ClassName::add(double a, double b)
{
  return a+b;
}

double ClassName::intermediate(double a, double b, std::function<double (double,double)> func)
{
  return func(a, b);
}

double ClassName::combiner(double a, double b)
{
  return intermediate(a, b, add);
}

int main()
{
  ClassName OBJ;
  std::cout << OBJ.combiner(12, 10);
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是将成员函数"add"传递给成员函数"intermediate",然后由"combiner"调用.但是,我不认为我使用正确的语法,因为当我尝试编译它时,我收到一条错误,说"非标准语法;使用'&'创建指向成员的指针." 我不太确定会出现什么问题,因为如果这些函数不是类中的成员函数(只是命名空间中定义的常规函数​​),则此方法可以正常工作. 那么是否可以将成员函数传递给另一个成员函数?

c++ function member-functions std-function

5
推荐指数
2
解决办法
3542
查看次数

嵌套朋友类所需的前向声明

假设我有两个类定义如下:

class obj1
{
  private:
    int mem;
    void method1();

  friend class obj2;
};

class obj2
{
  public:
    void method2();
};

void obj2::method2()
{
  obj1 test;
  test.mem = 59999;
  std::cout << test.mem;
  return;
}
Run Code Online (Sandbox Code Playgroud)

这非常有效.在main中,如果我声明一个obj2类型的对象然后调用它的method2成员函数,它可以成功地从obj1的实例访问私有变量.现在,假设我将这些类嵌套:

class parent
{
  public:
  class obj1
  {
    private:
      int mem;
      void method1();

    friend class obj2;
  };

  class obj2
  {
    public:
      void method2();
  };
  void my_function();
};

void parent::obj2::method2()
{
  obj1 test;
  test.mem = 59999;
  std::cout << test.mem;
  return;
}

void parent::my_function()
{
  obj2 test2;
  obj2.method2();
  return; …
Run Code Online (Sandbox Code Playgroud)

c++ nested class declaration forward

1
推荐指数
1
解决办法
173
查看次数