首页 > 后端开发 > C++ > 为什么在 Visual Studio 2015 中出现'非标准语法;使用'&”创建指向成员的指针”错误?

为什么在 Visual Studio 2015 中出现'非标准语法;使用'&”创建指向成员的指针”错误?

Patricia Arquette
发布: 2024-10-31 20:53:02
原创
889 人浏览过

Why Do I Get the

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

在 C 中使用成员函数时,它是使用正确的语法来访问它们至关重要。当尝试直接使用成员函数名作为函数指针时,会出现错误“非标准语法;使用‘&’创建指向成员的指针”。

错误说明

在 C 中,非成员函数可以用作函数指针,无需任何附加语法。但是,在处理成员函数时,不使用函数调用语法直接使用成员函数名是无效的。相反,您需要使用 & 运算符来获取指向成员函数的指针。

例如,考虑以下非成员函数:

<code class="cpp">void foo()
{
    // Function body
}</code>
登录后复制

在这种情况下,您可以直接在表达式中使用 foo 函数名称,如下所示:

<code class="cpp">foo; // Evaluates to a function pointer</code>
登录后复制

现在考虑结构体中的成员函数:

<code class="cpp">struct Bar
{
    void baz()
    {
        // Function body
    }
};</code>
登录后复制

尝试直接在没有函数调用语法的表达式将导致编译器错误。相反,您需要使用 & 运算符来获取指向成员函数的指针:

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

解决代码中的错误

在 TicTacToe.cpp 文件中,您定义了两个成员函数,player1Move 和player2Move,它们会引发您面临的错误。定义这些函数的正确方法是使用 & 运算符,如下所示:

<code class="cpp">// Corrected version of player1Move
void TicTacToe::player1Move(string coordX)
{
    cout << "Enter X: " << endl;
    cin >> coordX;
    _coordX = coordX;
}</code>
登录后复制
<code class="cpp">// Corrected version of player2Move
void TicTacToe::player2Move(string coordX)
{
    cout << "Enter X: " << endl;
    cin >> coordX;
    _coordX = coordX;
}</code>
登录后复制

通过进行这些更改,您将消除“非标准语法”错误并允许您的程序正确访问成员函数。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板