首頁 > 後端開發 > C++ > 主體

為什麼在存取模板中的基類成員時,GCC 會拋出'未聲明”錯誤?

Patricia Arquette
發布: 2024-11-02 11:15:02
原創
516 人瀏覽過

Why Does GCC Throw a

GCC 陷阱:使用模板參數依賴關係存取基類成員

此程式碼在GCC 中出現令人費解的編譯錯誤,但在Visual Studio 中成功:

template <typename T> class A {
public:
    T foo;
};

template <typename T> class B: public A<T> {
public:
    void bar() { cout << foo << endl; }
};
登入後複製

GCC 引發錯誤:「foo」不是在此範圍內聲明,」儘管是基類的成員。但是,修改程式碼以透過「this->foo」顯式引用基類成員可以解決該問題。 ,GCC 透過解析基類來推斷成員,但這可能會導致衝突。 🎜>使用「this」引用成員:

指定基類名稱:

    透過遵守這些準則,開發人員可以防止編譯錯誤並確保GCC 按模板內的預期處理基類成員存取。

以上是為什麼在存取模板中的基類成員時,GCC 會拋出'未聲明”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!