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])(); }};