将数组传递给类

时间:2014-01-07 02:32:35

标签: c++ arrays

在这个程序中,我试图将一个数组传递给我的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;
}

1 个答案:

答案 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[]);