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

时间:2017-05-06 16:04:49

标签: c++

当我尝试创建类型_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

1 个答案:

答案 0 :(得分:0)

@WhozCraig所说的是,你需要将(5)放在其他地方,特别是:

n_queens::n_queens() : some_stack(5) { /*existing constructor body*/ }