【发布时间】:2018-05-07 03:35:28
【问题描述】:
我在从函数指针访问非静态成员函数时遇到困难,并且无法完全弄清楚我的语法问题。当尝试如下所示进行编译时,我收到“错误:fnc_ptr 未在此范围内声明”。当代码被修改为不访问该函数时,它应该指向它编译并将为 bar.fn_ptr 打印出 1。要编译我使用:
g++ -std=c++11 -Wall example.cpp foo.cpp
拆分文件结构/命名空间只是为了模拟与我原来的问题相同的条件。
example.cpp
#include "foo.h"
#include <iostream>
int main(int argc, char* argv[]){
pizza::foo bar;
bar.fn_ptr = &pizza::foo::fnc_one;
std::cout << (bar.*fn_ptr)(1) << std::endl;
return 0;
}
foo.cpp
#include <cmath>
#include "foo.h"
namespace pizza{
double foo::fnc_one(double x){
return pow(x,3) - x + 2;
}
}
foo.h
namespace pizza{
class foo{
public:
double (foo::*fn_ptr)(double);
double fnc_one(double);
foo(){
fn_ptr = 0;
}
};
}
【问题讨论】:
标签: c++ non-static