[英]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.