谢谢大家!现在我改变了我的逻辑。因为如果我包含指向自身的相同指针,它将创建无限循环。所以对于这个修改过的,我需要编写析构函数吗?
#include <stdio.h>
#include <stdlib.h>
#include <tr1/array>
using namespace std;
class Graphnode {
public:
std::tr1::array<int, 16> state;
int x;
int depth;
Graphnode(std::tr1::array<int, 16>,int,int);
Graphnode();
//~Graphnode();
};
Graphnode::Graphnode()
{
int i=0;
for(i=0;i<16;i++)
{
state[i] = 0;
}
x = 0;
depth = 0;
}
Graphnode::Graphnode(std::tr1::array<int, 16> _state,int _x,int _d)
{
int i=0;
for(i=0;i<16;i++)
{
state[i] = _state[i];
}
x = _x;
depth = _d;
}
/*Graphnode::~Graphnode()
{
}*/
答案 0 :(得分:0)
当您尝试创建一个Graphnode
时,您的代码将创建一个无限循环您可以尝试为子Graphnodes创建特定的构造函数,以便在该构造函数中不会创建更多的Graphnode
答案 1 :(得分:0)
您没有在堆上分配任何内容,因此在销毁对象时无需清理任何内容。编译器会自动为你生成一个析构函数,IIRC它会基本上和你注释掉的空函数一样,尽管存在一些显着的差异。 Here's关于空析构函数和编译器生成的析构函数之间差异的一个很好的问题/答案。