当我尝试创建类型_queen
struct的模板数组堆栈类的实例作为n_queens
类的私有成员时,编译器会抛出这些错误:
错误:在数字常量之前预期','或'...' 错误:数字常量之前的预期标识符
两行array_stack<_queen> some_stack(5);
。当我将这个堆栈创建为全局变量时,一切似乎都没问题。
为什么我不能在课堂上创建堆栈?
#ifndef N_QUEENS_H
#define N_QUEENS_H
#define N 10
template <class T>
class array_stack
{
private:
int top ;
int stack_size;
T* s ;
public:
array_stack(int s_size)
{
stack_size = s_size ;
s = new T[stack_size];
std::memset(s,1,sizeof(T)*stack_size);
top = -1 ;
}
~array_stack()
{
delete []s;
top = -1 ;
stack_size = 0;
}
void push(T value)
{
if (top == stack_size - 1 )
{
std::cout<<"Stack Full"<<std::endl ;
return;
}
top = top + 1 ;
*( s + top ) = value ;
}
T pop()
{
if (top == -1)
{
std::cout<<"Stack Empty"<<std::endl ;
return 0;
}
int temp = top ;
top = top - 1 ;
return *( s + temp );
}
bool isempty()
{
if (top == -1)
return true;
else
return false ;
}
void print_stack()
{
if (top == -1)
{
std::cout<<"Empty List"<<std::endl;
return;
}
int i = 0;
while (i <= top )
{
std::cout<< *(s + i++)<< std::endl;
}
}
};
//////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct
{
bool fail ;
int row ;
int column;
}_queen;
///////////////////////////////////////////////////////////////////////////////////////////////////
class n_queens
{
public:
n_queens();
virtual ~n_queens();
n_queens(const n_queens& other);
void solve();
_queen initialize_struct(int column,int row);
private:
int board[N][N];
int number_of_queens;
array_stack<_queen> some_stack(5);
};
/////////////////////////////////////////////////////////////////////////////////////////////////////
#endif // N_QUEENS_H
答案 0 :(得分:0)
@WhozCraig所说的是,你需要将(5)
放在其他地方,特别是:
n_queens::n_queens() : some_stack(5) { /*existing constructor body*/ }