gpt4 book ai didi

c++ - 在函数中通过引用调用时标识符未定义

转载 作者:行者123 更新时间:2023-11-27 22:45:28 25 4
gpt4 key购买 nike

我正在尝试通过引用将“Piece”(我定义的一个类)的 vector 传递给一个函数,但是在编译期间我收到一条错误消息,指出“Piece”未定义。当前的文件如下所示:

Header.hpp

#pragma once
#ifndef MY_CLASS_H // Will only be true the once!
#define MY_CLASS_H
#include <vector>
//some stuff
bool make_move(std::vector<Piece*> & vector_of_pieces);
class Piece {
//member functions declarations
};
#endif

nonPieceFunctions.cpp

#include "Header.hpp"
#include<iostream>
#include <array>
#include <stdio.h>
#include <ctype.h>

using namespace std;

bool make_move(vector<Piece*> &vector_of_pieces) {
string piece_location, piece_new_location;
cout << "Which piece would you like to move?" << endl;
while (is_valid_input(piece_location) == false) { //checks input is of the right format
cin >> piece_location;
}
int file_no = get_file_no(piece_location); //gets file number from user input
int rank_no = get_rank_no(piece_location); //gets rank number from user input
cout << "File no is " << file_no << endl;
cout << "Rank no is " << rank_no << endl;
return true;
}

这不是我想要制作的函数的完整版本,但它目前无法按原样编译。 “make_move”中没有函数是任何类的成员函数。

最佳答案

现状

bool make_move(std::vector<Piece*> & vector_of_pieces);

出现在 Piece 的定义之前,因此是您的问题。

要么将它移到类定义之后。

或者转发声明如下:

class Piece;
bool make_move(std::vector<Piece*> & vector_of_pieces);

因为您在 vector 中使用指针,所以它应该可以工作。

顺便说一句 - 你是在某处删除这些指针吗?

关于c++ - 在函数中通过引用调用时标识符未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43608100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com