簡體   English   中英

返回帶有引用父作用域中變量的函數成員的結構

[英]Returning a struct with a function member that refer to a variable in parent scope

我正在嘗試實現一個函數,該函數返回帶有引用父作用域中變量的成員函數的結構。

struct Scanner {
  int nextToken();
}

Scanner test() {
  token = 1;
  return {
    int nextToken() {
      return token;
    }
  };
}

我不知道這在C++是否可行。 我是JavaScript開發人員,我不知道該如何完成。 關於如何引用變量token並返回可以提供nextToken()函數的結構或類,有什么建議嗎?

在舊版本的C ++標准中,您無法做到這一點(至少不那么容易)。

更好(也更簡單)的方法是使用C ++ 11的lambda。

諸如此類(目前尚未試用,很可能在某些地方包含語法問題或其他錯誤):

struct Scanner {
    std::function<int()> nextToken;
};

Scanner test() {
    token = 1;
    return {
        [=](){ return token; }
    };
}

但是,您真的確定需要這樣做嗎? 對於簡單/經典的類繼承,這似乎是一個完美的用例(也可以在結構中使用):

struct Scanner {
    virtual int nextToken() { return 0; }
}

struct TestScanner : public Scanner {
    virtual int nextToken() { return 1; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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