我正在使用 Visual Studio 2010。
为什么我不能获得指向在子类中“升级”为公共的类方法的指针?
以下代码无法编译:
#include <iostream>
#include <functional>
class Parent {
protected:
void foo() {
std::cout << "Parent::foo()\n";
}
};
class Child : public Parent
{
public:
//void foo() { Parent::foo(); } //This compiles
using Parent::foo; //This does NOT compile
};
int main() {
Child c;
std::function < void () > f = std::bind(&Child::foo, &c);
f();
return 0;
}
它给出了错误:
error C2248: 'Parent::foo' : cannot access protected member declared in class 'Parent'