C++在寫靜態變數時容易犯的一個小錯誤
在A.h標頭檔案裡這樣定義
#ifndef A_H
#define A_H
class A
{
private:
A();
~A();
static int m_num;
};
int A::m_num;
#endif
結果發現
Error 3 error LNK2005: "private: static int <span style="font-family: Arial, Helvetica, sans-serif;">A</span><span style="font-family: Arial, Helvetica, sans-serif;">::m_num" (?m_num@A@@0HA) already defined in A.obj</span>
Error 4 error LNK1169: one or more multiply defined symbols found
這時可能會很困惑,明明就定義一次,為什麼就說多次定義呢?
結果就這麼小的一個問題就得浪費你幾分鐘。
原來在A.cpp檔案裡匯入了A.h標頭檔案
#include "A.h"
而其他檔案如main.cpp檔案裡也匯入了A.h標頭檔案,導致了出現多次定義的問題,我就不解了,不是有標頭檔案衛兵嗎?但事實就是這樣,所以一般有.h檔案和.cpp檔案的類的static變數的初始化都得放在.cpp檔案裡初始化,不然會出現多重定義問題,謹記!相關文章
- macOS小白容易犯的24個錯誤Mac
- go新手容易犯的三個致命錯誤Go
- Java 開發者最容易犯的10個錯誤Java
- 十個PHP開發者最容易犯的錯誤PHP
- Linux 新手容易犯的 7 個錯誤Linux
- Linux 新手容易犯的 7 個 錯誤Linux
- 10個最容易犯的HTML標籤錯誤HTML
- C++程式設計人員容易犯的10個C#錯誤(轉)C++程式設計C#
- 前端開發最容易犯的13個JavaScript錯誤前端JavaScript
- Java程式設計師容易犯的10個錯誤Java程式設計師
- 開發時犯得小錯誤
- 很多人容易犯的面試錯誤面試
- Python最容易犯的錯誤,一定要警惕!Python
- Android程式設計容易犯的錯誤之一Android程式設計
- 寫Java程式最容易犯的21種錯誤例項分析Java
- Java初學者容易犯哪些錯誤?Java
- 記一次因為共享變數的犯錯誤變數
- JavaScript容易犯錯的九個陷阱JavaScript
- 在vue生命週期裡呼叫函式時犯的一個錯誤Vue函式
- Java初學者容易犯的程式碼錯誤Java
- Python 入門最容易犯的錯誤Python
- 開發新手最容易犯的50個 Ruby on Rails 錯誤(1)AI
- 【C++】靜態持續變數?如何建立靜態持續變數?C++變數
- Rxjs SwitchMap 的一些容易犯的錯誤和替代方案JS
- C/C++ 靜態變數解析C++變數
- 程式設計師最容易犯的幾個技術上的錯誤程式設計師
- Android程式設計容易犯的錯誤之二Android程式設計
- 為什麼為 const 變數重新賦值不是個靜態錯誤變數賦值
- C++ 靜態變數單例模式的誤會(執行緒安全)C++變數單例模式執行緒
- 靜態變數和非靜態變數變數
- 容易犯錯的 PHP 函式PHP函式
- 配置Java環境變數時的一個常見錯誤Java變數
- Python新手入門最容易犯的錯誤有哪些?Python
- C++ 靜態變數什麼時候完成初始化C++變數
- 直播app開發中容易犯的小錯誤,有則改之無則加勉APP
- C++ static variable(靜態變數) 學習C++變數
- 測試程式碼時你會犯的 11 個錯誤
- javascript sort方法容易犯錯的地方JavaScript