簡體   English   中英

從聚合類訪問成員變量

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM