相关疑难解决方法(0)

参考会员功能?

我最近发现在C++中有一个引用功能概念:).因此,存在指向函数的指针和指向成员函数的不同类型.问题出现了.是否有"参考成员功能"概念?

我尝试编译以下代码,但GCC 3.4.6给出了错误.

#include <iostream>

using namespace std;

class A {
public:
  virtual void Af() const {
    cout << "A::Af()" << endl;
  }
};

int main() {
  typedef void (A::& MemFnc)() const;
  MemFnc mf = &A::Af;

  A a;
  (a.*mf)();

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ function-pointers

17
推荐指数
1
解决办法
1万
查看次数

为什么成员函数不能用作模板参数?

为什么成员函数不能用作模板参数?例如,我想这样做:

struct Foo {
    void Bar() { // do something
    }
};
template <typename TOwner, void(&func)()>
void Call(TOwner *p) {
    p->func();
}
int main() {
    Foo a;
    Call<Foo, Foo::Bar>(&a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道使用指向成员的指针可以做类似的事情; 好吧,它大部分时间都很酷,但我只是好奇为什么指针"应该"使用.

我认为上面解释"p-> func()"没有含糊之处.为什么该标准禁止我们使用成员函数作为模板参数?根据我的编译器(VC++ 2013),甚至不允许使用静态成员函数.有谁知道原因?或者,有没有办法做同样的事情而不会因指针解除引用而失去任何性能?

谢谢.

c++ templates member-functions

8
推荐指数
2
解决办法
1万
查看次数

C++ 对类数据成员的引用

我最近才发现存在指向类数据成员的指针,例如:

class Car
{
    public:
    int speed;
};

int main()
{
    int Car::*pSpeed = &Car::speed;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

是否也存在对类数据成员的引用?如果是这样,声明它们的语法是什么?

c++ reference member

7
推荐指数
1
解决办法
1148
查看次数

为什么成员函数以这种方式解决?

为什么在获取成员函数的地址而不是全局函数时会出现&符号?即,为什么这样的事情

std::bind(&MyClass::MemberFunction, ...);
Run Code Online (Sandbox Code Playgroud)

当全球职能需要时

std::bind(GlobalFunction, ...);
Run Code Online (Sandbox Code Playgroud)

c++ c++11

1
推荐指数
1
解决办法
106
查看次数