调用类函数指针引起的编译器错误 C2064

来源:互联网 发布:sql2005数据库补丁 编辑:程序博客网 时间:2024/04/29 10:10

http://msdn.microsoft.com/zh-cn/library/z72c1dfd(v=VS.80).aspx

错误消息

项不会计算为接受“number”个参数的函数

通过表达式调用了函数。该表达式未计算为函数指针。

下面的示例生成 C2064:

// C2064.cppint i, j;char* p;void func() {   j = i();    // C2064, i is not a function   p();        // C2064, p doesn't point to a function}

下面的示例生成 C2064:

// C2064b.cppstruct C {   void func1(){}   void func2(){}}; typedef void (C::*pFunc)();int main() {   C c;   pFunc funcArray[2] = {&C::func1, &C::func2};   (funcArray[0])();    // C2064}

可能的解决方法:

// C2064c.cppstruct C {   void func1(){}   void func2(){}}; typedef void (C::*pFunc)();int main() {   C c;   pFunc funcArray[2] = {&C::func1, &C::func2};   (c.* funcArray[0])();}

下面的示例生成 C2064:

// C2064d.cppstruct C {   typedef void (C::*pFunc)();   pFunc funcArray[2];   void func1(){}   void func2(){}   C() {      funcArray[0] = C::func1;      funcArray[1] = C::func2;   }   void func3() {      (funcArray[0])();   // C2064   }};

可能的解决方法:

// C2064e.cpp// compile with: /cstruct C {   typedef void (C::*pFunc)();   pFunc funcArray[2];   void func1(){}   void func2(){}   C() {      funcArray[0] = &C::func1;      funcArray[1] = &C::func2;   }   void func3() {      (this->* funcArray[0])();   }};
原创粉丝点击