试图让stack.cpp
的推送功能将max_size_
变量增加1。
Array.h:
template <typename T>
class Array: public BaseArray<T>
{
public:
//loads of fun code
private:
size_t max_size_;
};
Stack.cpp:
//...even more fun code...
template <typename T>
void Stack <T>::push (T element)
{
ArrayStack::max_size_++;
}
Stack.h:
template <typename T>
class Stack
{
public:
Stack (void);
private:
Array <T> ArrayStack;
};
错误:
error: ‘ArrayStack’ is not a class or namespace
ArrayStack::max_size_++;
或者如果我只用max_size_
运行它:
template <typename T>
void Stack <T>::push (T element)
{
max_size_++;
}
error: ‘max_size_’ was not declared in this scope
max_size_++;
答案 0 :(得分:0)
如果不改变某些事情,你实际上无法做到这一点。
max_size_++;
是ArrayStack
的私人成员,因此您无法在Stack
方法中对其进行更改。
选项1(更好):向ArrayStack
添加方法,将值增加一void incMaxSize() { max_size_++; }
并改为调用
选项2(更糟):让Stack
班级成为ArrayStack
的朋友
选项3(更糟糕的是):将max_size_
变量公开,然后将调用更改为ArrayStack.max_size_++;
答案 1 :(得分:0)
由于您在Array类中创建了max_size_ private,因此您需要创建一个getter和setter来在该类之外访问它。然后在Stack类中,您可以获取max_size_值并将其保存在局部变量中,然后将其设置为1 +它的当前值以实现max_size _ ++