gpt4 book ai didi

c++ - 使用 'using' 关键字获取指向类方法的指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:32 25 4
gpt4 key购买 nike

我使用的是 Visual Studio 2010。

为什么我无法获得指向子类中“升级”为 public 的类方法的指针?

以下代码无法编译:

#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'

最佳答案

编译 here .

我想你只是忘了在你的编译器中添加 C++11 选项。

例如,对于 gcc,它是 -std=c++11-std=gnu++11

编辑: 似乎来自 here 使用别名声明 未在任何 Visual Studio 版本中实现。

事实上,here有些人谈论编译器错误。

这里奇怪的是:

c.foo();                                                   // this works fine
std::function < void () > f = std::bind(&Child::foo, &c); // this won't compile

关于c++ - 使用 'using' 关键字获取指向类方法的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18597712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com