gpt4 book ai didi

c++ - VS2013编译错误: non-static data member initialization by pointer to member

转载 作者:太空狗 更新时间:2023-10-29 23:20:40 25 4
gpt4 key购买 nike

此代码不适用于 VS2013,但适用于 GCC ( http://ideone.com/WgmlT2 )。谁是对的,是否有一些解决方法?

struct A
{
void(A::*fn)() = &A::do_work; // C2276: '&' : illegal operation on bound member function expression
void do_work() { cout << "Hello, world!"; }
};

int main()
{
A a;
(a.*(a.fn))();
}

我在宏路由器之类的东西中需要它,所以构造函数初始化列表中的初始化不合适。

#define ROUTE(url, ...) \
route_inserter_base route_inserter_##url = make_route_inserter(*this, #url, &this_t::url##_action); \
mystream url##_action

ROUTES_BEGIN(app)
ROUTE(getdata)(int idx) {
return data[idx];
}
ROUTES_END

最佳答案

不太确定我完全理解你的问题,但是对于成员函数指针,你可以尝试:

struct A;
typedef void (A::*pClassFun)();
struct A
{
void do_work() { cout << "Hello, world!"; }
void call_do_work(pClassFun fun)
{
(this->*fun)();
}
};


int main()
{
A a;
a.call_do_work(&A::do_work);
}

关于c++ - VS2013编译错误: non-static data member initialization by pointer to member,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19489788/

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