首页 > 后端开发 > C++ > 正文

如何解决 Visual Studio 2015 中的'非标准语法;使用 '&\' 创建指向成员的指针”错误?

DDD
发布: 2024-10-31 20:26:02
原创
920 人浏览过

How to Resolve

Visual Studio 2015 错误 C3867:“非标准语法;使用 '&' 创建指向成员的指针”

问题:

当尝试用 C 语言开发 Tic Tac Toe 游戏时,用户遇到错误 C3867:“非标准语法;使用 '&' 创建要记住的指针”。尽管尝试了建议的解决方案,错误仍然存​​在。如何解决?

答案:

错误消息表明代码尝试使用成员函数名称而不使用取址运算符 (& ) 创建指向成员函数的指针。

在非成员函数中,可以直接在表达式中使用函数名称,而无需使用函数调用语法。但是,在成员函数中,使用成员函数名而不使用调用语法是无效的。

要获取指向成员函数的指针,必须使用 & 运算符:

<code class="c++">struct Bar {
   void baz() {}
};

&amp;Bar::baz;   // Valid</code>
登录后复制

应用这个概念到提供的代码中,问题出现在player1Move函数中:

<code class="c++">void TicTacToe::player1Move(string coordX) // ERROR
{
  cout << "Enter X: " << endl;
  cin >> coordX;
  _coordX = coordX;
}</code>
登录后复制

在这段代码中,player1Move函数是TicTacToe类的成员函数,错误是由于使用函数名引起的不使用地址运算符的player1Move:

<code class="c++">Board.player1Move; // ERROR: Should be Board.player1Move() or &amp;Board.player1Move</code>
登录后复制

通过添加&运算符,代码将正确创建指向成员函数的指针:

<code class="c++">void TicTacToe::player1Move(string coordX)
{
  cout << "Enter X: " << endl;
  cin >> coordX;
  _coordX = coordX;
}

Board.&amp;player1Move; // Valid pointer to member function</code>
登录后复制

以上是如何解决 Visual Studio 2015 中的'非标准语法;使用 '&\' 创建指向成员的指针”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!