Я пытаюсь создать модуль Chess, используя структуру ChessPiece и структуру ChessGame. Использование XCode 6.1.1. Вот мой файл заголовка и рассматриваемая функция в моем Chess.cpp. Я получаю сообщение об ошибке: «Использование необъявленного идентификатора initChessPiece». Вы имели в виду «ChessPiece :: initChessPiece» ?. Если я сделаю это изменение, появится сообщение об ошибке «вызов функции-члена, не являющейся членом стека, без аргумента объекта». Наконец, если я проведу линию,
game.pieces[i].initChessPiece(game.pieces[i], color, piece, x, y);
Компоновщик выдает ошибку:
Неопределенные символы для архитектуры x86_64: "ChessPiece :: initChessPiece (ChessPiece, std :: __ 1 :: basic_string, std :: __ 1 :: allocator> const &, std :: __ 1 :: basic_string, std :: __ 1 :: allocator> const &, unsigned int, unsigned int) ", ссылка на которую дана из: readChessGame (ChessGame &, std :: __ 1 :: basic_string, std :: __ 1 :: allocator> const &) в Chess.o ld: символ (ы) не найден для архитектуры x86_64 clang: ошибка: команда компоновщика завершилась неудачно с кодом выхода 1 (используйте -v, чтобы увидеть вызов)
#ifndef CHESS_H
#define CHESS_H
#include <stdio.h>
#include <string>
using namespace std;
const int ROWS = 8;
const int COLUMNS = 8;
struct ChessPiece {
string name;
string colour;
unsigned int row;
unsigned int column;
void initChessPiece(ChessPiece, const string& colour, const string& name, unsigned int row, unsigned int column);
string getStringColourChessPiece(const ChessPiece&) const;
string getStringNameChessPiece(const ChessPiece&) const;
friend class ChessGame;
};
struct ChessGame {
unsigned int chessBoard[ROWS][COLUMNS];
ChessPiece pieces[32];
void readChessGame(ChessGame&, const string& filename);
void printChessGame(const ChessGame&);
int scoreChessGame(const ChessGame&) const;
bool isFinished(const ChessGame&) const;
};
#endif
Chess.cpp
#include "Chess.h"
void readChessGame(ChessGame& game, const string& filename) {
ifstream inData;
inData.open(filename.c_str());
string color;
string piece;
unsigned int x;
unsigned int y;
for (int i=0;i<32;i++) {
inData >> color >> piece >> x >> y;
initChessPiece(game.pieces[i], color, piece, x, y);
}
}
void initChessPiece(ChessPiece& piece, const string& colour, const string& name, unsigned int row, unsigned int column) {
piece.row = row;
piece.column = column;
piece.name = name;
piece.colour = colour;
}
Это мой последний практический вопрос CS, и все заголовки функций были установлены инструкциями, поэтому мне нужно работать с тем, как они настроены.
initChessPiece
? - person Jonathan Potter   schedule 16.12.2014initChessPiece(...)
? Есть ли другой исходный файл, о котором вы нам не рассказали? И какой инструмент вы используете, чтобы это построить? - person Beta   schedule 16.12.2014ChessPiece
. Вам будет лучше выучить язык с помощью учебника или учебника, прежде чем некоторые из допущенных вами ошибок обретут смысл. Вы можете попробовать базовое руководство по адресу tutorialspoint.com/cplusplus/cpp_classes_objects.htm. - person R Sahu   schedule 16.12.2014