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();
}