首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 編程錯誤與警告 (二):extra qualification 多餘限定符

     編輯:關於C++

錯誤現象

GCC 編譯報錯:

Hello.h:17: error: extra qualification 'Hello::' on member 'hello'

問題代碼

class Hello {
    // ...
    void Hello::hello(); // 錯誤:類內聲明不得帶類名限定
    // ...
};

原因分析

在類定義內部聲明成員函數時,已隱式處於該類作用域,禁止使用 ClassName:: 限定符。這通常源於將類外定義語法(void Hello::hello() { ... })誤貼到類內聲明處。

正確寫法

class Hello {
    // ...
    void hello(); // 正確:僅函數名
    // ...
};

// 類外定義時才加限定
void Hello::hello() {
    // 實現
}

適用範圍

  • 成員函數聲明
  • 成員變量聲明
  • 嵌套類型聲明

C++ 標準 (ISO/IEC 14882) 明確規定:類成員聲明中不得出現 nested-name-specifier(即 ClassName::)。MSVC 可能僅給出警告,GCC/Clang 則報硬錯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved