Visual Studio 2015 오류 C3867: "비표준 구문, 멤버에 대한 포인터를 만들려면 '&'를 사용하세요."
질문:
C에서 Tic Tac Toe 게임을 개발하려고 할 때 사용자에게 C3867 오류가 발생했습니다. "비표준 구문입니다. 기억할 포인터를 만들려면 '&'를 사용하세요." 제안된 해결 방법을 시도해도 오류가 지속됩니다. 어떻게 해결할 수 있습니까?
답변:
오류 메시지는 코드가 주소 연산자(& ) 멤버 함수에 대한 포인터를 생성합니다.
비멤버 함수에서는 함수 호출 구문을 사용하지 않고 함수 이름을 표현식에서 직접 사용할 수 있습니다. 그러나 멤버 함수에서 호출 구문 없이 멤버 함수 이름을 사용하는 것은 유효하지 않습니다.
멤버 함수에 대한 포인터를 얻으려면 & 연산자를 사용해야 합니다.
<code class="c++">struct Bar { void baz() {} }; &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 &Board.player1Move</code>
& 연산자를 추가하면 코드가 멤버 함수에 대한 포인터를 올바르게 생성합니다.
<code class="c++">void TicTacToe::player1Move(string coordX) { cout << "Enter X: " << endl; cin >> coordX; _coordX = coordX; } Board.&player1Move; // Valid pointer to member function</code>
위 내용은 Visual Studio 2015에서 \'비표준 구문; \'&\'를 사용하여 멤버에 대한 포인터 만들기\' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!