仿函数和对象继承

Noa*_*oah 2 c++ stl compiler-errors functor

简要概述:我有一个构建一些数据对象的基类.然后我有一个子类,它继承了基类中所有公共方法和指向对象的指针.

在那个子类中,我想构造一个在for_each循环中使用的仿函数(作为结构).我的问题是在仿函数运算符中,我在尝试访问对象时遇到错误.

缩写示例:

class Child  : public BaseClass {
  Child(DataSource& in_data): Base(in_data){};

  struct foo {
    double operator() (int x){  
        double y = in_data.some_function(x);
        // do stuff
    }            
  };
}
Run Code Online (Sandbox Code Playgroud)

错误:无法访问in_data.some_function.

想法?

Oli*_*rth 6

嵌套类没有封闭类成员的可见性(它们就像staticJava中的嵌套类).

如果要foo访问in_data,则需要明确提供参考.所以在foo构造函数中,要么引用a DataSource,要么引用Child(和传递*this).