在这个程序中,我试图将一个数组传递给我的Player类但是我一直收到错误
1>project.obj : error LNK2019: unresolved external symbol "public: __thiscall Player::Player(int *
const)" (??0Player@@QAE@QAH@Z) referenced in function _main
在实际程序中,我将类本身放在自己的头文件中,并将其包含在我的程序中。然后我有另一个cpp文件,其中包含类播放器中函数的定义。这有道理吗?无论如何,我不知道我做错了什么。有什么想法吗?
#include "stdafx.h"
#include <iostream>
using namespace std;
class Player
{
public:
void moveUp ();
void moveDown ();
void moveRight ();
void moveLeft ();
Player(int b[16]); //create a variable to store the boardArray[]
};
void moveUp ()
{
}
void moveDown ()
{
}
void moveRight ()
{
}
void moveLeft ()
{
}
int drawBoard (int boardArray[16]) //draw the game board
{
for (int i = 0; i < 16; i++) //use a for loop to simply draw the game board (4x4)
{
cout <<boardArray[i]; //ouput the storage id of the array
if ( i == 3 || i == 7 || i == 11 || i == 15) //every 4 lines begin new line
{
cout <<"\n";
}
}
return 0;
}
int main ()
{
int bArray[16] = { 1, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0}; //create an array [16]
drawBoard(bArray); //send the aray to drawBoard ()
Player p (bArray); //send the array to the Player class
char f;
cin >>f;
}
答案 0 :(得分:0)
免责声明:以下答案最终可能不是您希望代码执行的操作,但它会为您提供一个良好的起点。
在这一行中,它没有按照您的评论说明
Player(int b[16]); //create a variable to store the boardArray[]
您所做的是声明构造函数来获取数组,但您尚未创建它。这个声明需要与一个实现配对,我将会介绍,但首先你需要声明一个成员变量来存储数组。
int mB[16];
现在你可以实现你的构造函数,我将在void moveUp()
Player::Player(int b[])
{
// copy b into the member array
for(int i = 0; i < 16; i++)
{
mB[i] = b[i];
}
}
现在你可以在move
函数中使用mB [],而不必担心b数组超出范围,基本上意味着它不再有效,你不能再依赖它了。
最后,您的构造函数声明不需要参数列表中的[16]。看起来应该是这样的
Player(int b[]);