这是我第一次提出问题,如果我将帖子格式错误,请原谅我。
我正在从C ++的标准模板库中创建自己的Queue类版本。我写了一个私有成员函数,它返回一个索引到存储在数组中的数据的尾端(对于这个赋值,我们要使用数组而不是链表,尽管做后者更有意义)。
问题是,当我调用这个私有成员函数时,我收到错误:无效使用成员(你忘了'&'?)。我不确定这是因为我在类定义中声明函数的方式还是因为我在另一个函数中调用它是错误的。这是代码(有问题的函数int tailIndex()
位于代码块的末尾):
// QUEUE
template <class T>
class Queue
{
public:
// default constructor : empty and kinda useless
Queue() : numPop(0), numPush(0), mCapacity(0), data(0x00000000) {}
// copy constructor
Queue(const Queue & rhs) throw (const char *) :
mCapacity(0), data(0x00000000) { *this = rhs; }
// non-default constructor : pre-allocate memory
Queue(int capacity) throw (const char *);
// destructor : free everything
~Queue() { if (mCapacity) delete [] data; }
...跳过一些方法来解决问题...
private:
T * data; // dynamically allocated array of T
int numPush; // number of items pushed so far
int numPop; // number of items popped so far
int mCapacity; // how many items can I put on the Queue before full
// double the allocated memory
void resize() throw (const char *);
// return an index to the head
int headIndex() const { return numPop % capacity; }
// return an index to the tail
int tailIndex() const { return (numPush - 1) % capacity; }
};
问题是tailIndex()
。当我稍后在成员函数中调用它时,它会给出错误。虽然我认为没有必要,但这是函数调用:
int index = tailIndex() + 1;
以下是我从编译器获得的确切输出,如果有帮助的话:
queue.h: In member function ‘int& Queue<T>::tailIndex() const [with T = int]’:
queue.h:229: instantiated from ‘void Queue<T>::push(const T&) [with T = int]’
qTest.cpp:18: instantiated from here
queue.h:96: error: invalid use of member (did you forget the ‘&’ ?)
关于它。感谢您抽出宝贵时间来审核此问题。