[英]Accessing member variables from aggregated class
只是试图让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_++;
你实际上不能不改变一些东西来做到这一点。 max_size_++;
是ArrayStack
的私有成员,因此您不能从Stack
方法内部更改它。
选项 1(更好):向您的ArrayStack
添加一个方法,该方法将值增加一个void incMaxSize() { max_size_++; }
void incMaxSize() { max_size_++; }
并调用它,而不是
选项 2(更糟):让Stack
类成为ArrayStack
的朋友
选项 3(甚至更糟):公开max_size_
变量,然后将调用更改为ArrayStack.max_size_++;
由于您在 Array 类中将 max_size_ 设为私有,因此您需要创建一个 getter 和 setter 以在该类之外访问它。 然后在您的 Stack 类中,您可以获得 max_size_ 值并将其保存在局部变量中,然后将其设置为 1 + 它的当前值以实现 max_size_++
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.