This question already has an answer here:
Calling pointer-to-member function C++
(1个答案)
去年关闭。
我正在尝试研究C ++模板的相对问题,并且遇到了一个问题,源代码如下,我尝试了所有可能的方法,但是没有用,有人可以帮忙吗?谢谢!!
我尝试过t.funcInTemplate方法,编译器告诉我“错误:必须使用'。'或'->'来调用指针成员函数”
我尝试了t。* funcInTemplate方法,编译器告诉我“错误:未在此范围内声明'funcInTemplate'”
像使用点运算符方法之类的答案可能可以解决此问题的一半,但不能解决全部问题。
您应该使用后跟点运算符的类对象来调用类方法。
(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