kru*_*sty 1 c++ visual-studio-2010
任何人都知道如何在msvc2010下编译这个示例代码?(据说在海湾合作委员会下编制)
class cmdLine;
struct cmdList
{
const char *c;
const char *s;
const char *h;
void (cmdLine::*cmdFuncPtr)();
};
class cmdLine
{
public:
cmdLine();
static cmdList myCmdList[];
void test();
};
cmdLine::cmdLine()
{
}
void cmdLine::test()
{
}
cmdList cmdLine::myCmdList[] =
{
{"xxx", "yyy", "zzzzz", &cmdLine::test},
{"aaa", "bbb", "ccc", 0}
};
int _tmain(int argc, _TCHAR* argv[])
{
cmdLine c;
(c.myCmdList[0].*cmdFuncPtr) (); //error (why?)
}
Run Code Online (Sandbox Code Playgroud)
我得到错误C2065:'cmdFuncPtr':未声明的标识符,不知道什么是错的?
使用此语法
(c.*c.myCmdList[0].cmdFuncPtr) ();
Run Code Online (Sandbox Code Playgroud)
作为cmdFuncPtr指向方法的指针cmdLine,它需要调用类的实例,即c.同时,cmdFuncPtr是一个成员cmdList,所以它需要一个存储它的类的实例,即c.myCmdList[0].这就是为什么c在表达式中应该使用两次.
OP提供的表达式解析为:" c.myCmdList[0]通过存储在独立变量中的方法指针调用类实例上的方法cmdFuncPtr".这样的变量不存在,这就是编译器所抱怨的.
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |