This question already has an answer here:
Calling pointer-to-member function C++
                                
                                    (1个答案)
                                
                        
                                去年关闭。
            
                    
我正在尝试研究C ++模板的相对问题,并且遇到了一个问题,源代码如下,我尝试了所有可能的方法,但是没有用,有人可以帮忙吗?谢谢!!

template<typename T>
class myTest{
 public:
  bool (T::*funcInTemplate)() const;
  void addFunc(bool (T::*myFunc)() const = nullptr) {
    funcInTemplate = myFunc;
  }
};

class test : public myTest<test> {
 public:
  test() {
    addFunc(&test::func1);
  }
  bool func1() const {
    return true;
  }
};


int main(void) {

  test t;
  bool b = /* **Question is here, how to call "funcInTemplate" through instance t?** */;
  std::cout << "ret is " << b << std::endl;

  return 0;
}


我尝试过t.funcInTemplate方法,编译器告诉我“错误:必须使用'。'或'->'来调用指针成员函数”

我尝试了t。* funcInTemplate方法,编译器告诉我“错误:未在此范围内声明'funcInTemplate'”

像使用点运算符方法之类的答案可能可以解决此问题的一半,但不能解决全部问题。

最佳答案

这样做:

  test t;
  bool b = t.func1();
  std::cout << "ret is " << b << std::endl;


您应该使用后跟点运算符的类对象来调用类方法。

07-24 19:51