无法将类对象创建为另一个类的成员

Can't create class object as another class' member

本文关键字:另一个 成员 对象 创建      更新时间:2023-10-16

当我尝试创建一个 _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

评论者@Whozcraig说的是您需要将(5)放在其他地方,特别是:

n_queens::n_queens() : some_stack(5) { /*existing constructor body*/ }
相关文章: