Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 动态对象数组增加_C++_Arrays_Object_Dynamic_Allocation - Fatal编程技术网

C++ 动态对象数组增加

C++ 动态对象数组增加,c++,arrays,object,dynamic,allocation,C++,Arrays,Object,Dynamic,Allocation,我正在构建一个多米诺骨牌游戏,并试图创建一个功能,将石头添加到一堆中。 这是石头类: class Stone { public: Stone(){ left = 0; right = 0; }; Stone(int x, int y){ left = x; right = y; }; void turnStone(); bool comStones(const Stone&); void printOpen(); void printClo

我正在构建一个多米诺骨牌游戏,并试图创建一个功能,将石头添加到一堆中。 这是石头类:

class Stone
{
public:
    Stone(){ left = 0; right = 0; };
    Stone(int x, int y){ left = x; right = y; };
    void turnStone();
    bool comStones(const Stone&);
    void printOpen();
    void printClosed();
    friend class Pile;
    friend class Game;
private:
    int left, right;
};
这是桩类:

class Pile
{
public:
    Pile(){};
    Stone indexfun(int);
    void printOpen();
    void printClosed();
    void fillPile();
    void randPile();
    void addStone(Stone&);
    void remStone(Stone&);
    friend class Player;
    friend class Game;
private:
    Stone* list;
    int size=0;
};
现在,我为向桩中添加石头而构建的功能是:

void Pile::addStone(Stone& newStone) {
    Stone* newList = new Stone[size + 1];
    int i;
    for (i = 0; i < size; i++)
    {
        newList[i] = list[i];
    }
    newList[i] = newStone;
    delete[] list;
    list = newList;
    size++;
}

可能将列表变量名更改为list1或类似的名称。list是一个STL容器,就像vector一样

您不使用std::vector有什么原因吗?在我的课程中,我们使用名称空间std;这就是为什么。把你赶出节目??把手从电脑窗口伸出来把你扔到什么地方?或者请你详细解释一下。@AdamMo那没有意义,我想你误解了什么。但这与你是否可以使用a无关。你在addStone之前调用了什么函数吗?我有一个简单的循环,添加100000块石头,没有碰撞。
class Game
{
public:
    Game(char*);
    void run();
private:
    Player human, computer;
    Pile box, table;
    int start, finish;
    void playerMove(int);
    void checkPile(int);
    bool checkMove(int,int);
    bool whosFirst();
    bool checkGame();
    void printTable();
};
class Player
{
public:
    Player(){};
    void addStone(Stone&);
    void remStone(Stone&);
    void printPile();
    Stone* searchStone();
    friend class Game;
private:
    char* name;
    Pile pie;
};
void Game::run() {
    cout << "starting the game" << endl;
    box.fillPile();
    box.size = 28;
    box.randPile();
    for (int i = 0; i < 7; i++)
    {
        human.addStone(box.list[i]);
        box.remStone(box.list[i]);
        computer.addStone(box.list[i]);
        box.remStone(box.list[i]);
    }
}
void Player::addStone(Stone& added) {
    pie.addStone(added);
}

int main()
{
    char name[80];
    cout << "enter your name" << endl;
    cin >> name;
    Game game(name);
    game.run();
}