提供的程式碼無法使用 GCC 進行編譯,但可以使用 Visual Studio 進行編譯。當嘗試在 bar 函數中存取基底類別的 foo 成員時,GCC 遇到錯誤,聲稱 foo 未在目前範圍內宣告。
根據官方 C 規範,GCC 遵循某些規則:如果基類是模板類,則阻止編譯器推斷基類的成員。這是因為,如果不直接了解基類的定義,編譯器無法確定其成員。
要解決此問題,有兩個選項:
<code class="cpp">void bar() { cout << this->foo << endl; }
<code class="cpp">void bar() { cout << A<T>::foo << endl; }</code>
這使GCC 能夠將foo 成員識別為屬於基類A
因此,在模板類中訪問基類別成員的正確語法是this->foo 或A
以上是為什麼我無法使用 GCC 存取模板函數中的基類成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!