【发布时间】:2018-03-19 07:47:20
【问题描述】:
只是试图让stack.cpp 的推送函数将max_size_ 变量增加1。
数组.h:
template <typename T>
class Array: public BaseArray<T>
{
public:
//loads of fun code
private:
size_t max_size_;
};
堆栈.cpp:
//...even more fun code...
template <typename T>
void Stack <T>::push (T element)
{
ArrayStack::max_size_++;
}
堆栈.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_++;
【问题讨论】:
-
你真的应该得到一个good book。
-
::是作用域运算符,而不是成员选择运算符,即.。您已经看到了类似于例如的语法。ArrayStack.max_size之前?然而,这不是您唯一的问题,因为您尝试访问的成员变量是 private。如果向Array添加元素,Array类本身的大小不应该自动更新吗?
标签: c++ aggregation