robot.h:11:20:错误:数字常量之前的预期标识符 队列SQ(10);
struct Robot
{
string m_name; //robot name
Queue<string> SQ(10); //queue of services
int m_timer; //time til robot is done
string m_lastService; //most recent service
};
我不明白为什么我收到这个错误。当我拿走(10)它使用默认构造函数并且工作正常。这是Queue类。
template <typename T>
class Queue : public AbstractQueue<T>
{
private:
T* m_array;
int m_front;
int m_back;
int m_capacity;
int m_size;
public:
Queue();
Queue(int max);
void setMax(int max);
bool isEmpty() const;
const T& front() const throw (Oops);
const T& back() const throw (Oops);
void enqueue(const T& x);
void dequeue();
void clear();
~Queue();
};
我使用了Queue类的另一个声明,它在main中工作,但由于某种原因它在struct中不起作用,这是我在main中声明的
Queue<Robot> R(10);
答案 0 :(得分:1)
您不能像这样指定在成员变量初始化中使用的非默认构造函数。
您可以使用member initializer list提供构造函数来指定要使用的Queue
的构造函数。
struct Robot
{
string m_name; //robot name
Queue<string> SQ(); //queue of services
int m_timer; //time til robot is done
string m_lastService; //most recent service
Robot() : SQ(10) {}
};
或者使用default member initializer(因为c ++ 11):
Queue<string> SQ{10};