1. 程式人生 > >C++類內static指標報錯“無法解析的外部符號”解決方法

C++類內static指標報錯“無法解析的外部符號”解決方法

今天在看《大話設計模式》,實踐裡面的單例模式。寫了如下程式碼:

#include <iostream>
using namespace std;

class Single;
class Single
{
private:
    Single(){}
    static Single *inst;
public:
    Single::~Single();
    static Single* Single::GetInstance();
};

//Single * Single::inst = NULL;

Single::~Single()
{
    if (inst != nullptr
) delete inst; } Single* Single::GetInstance() { if (inst == nullptr) { return inst=new Single(); } else return inst; } int main() { Single *single1 = single1->GetInstance(); Single *single2 = single2->GetInstance(); cout << single1 << endl; cout
<< single2 << endl; system("pause"); return 0; }

結果編譯報錯“無法解析的外部符號”。找了別人的來看,發現是我的靜態指標沒有初始化。加上上面程式碼中註釋掉的那句,問題解決。另外,GetInstance函式也可以改成靜態的,這樣建立物件時就不用分兩行寫了。

相關推薦

C++static指標無法解析外部符號解決方法

今天在看《大話設計模式》,實踐裡面的單例模式。寫了如下程式碼: #include <iostream> using namespace std; class Single; class Single { private: Single

ExtJs6編譯之後上線無法查看到的解決方法

部署 壓縮 bsp ons not testing 詳細 cto 別名 最近Extjs編譯後部署遇到了一個錯誤c is not a constructor,報錯位置在app.js裏,這根本沒法找 解決方法:用命令sencha app build testing 編譯之後

牛客網——const二級指標: 無法從“int **”轉換為“const int **”

喵哥在牛客網遇到這麼一題選擇題: class A { }; void f(const A** p) {} void g(const A * const *p) {} void k(const A*&p) {} int main() { const A * ca = new A();

WAS Server 啟動無法找到秘鑰解決辦法

webshpere報錯日誌:[7/18/17 18:04:24:582 CST] 0000000a ORBRas E com.ibm.ws.orbimpl.transport.WSTransport createServerSocket P=254162:O=0:CT ORBX0390E: Ca

VCSA 6.5無法訪問,“503 Service Unavailable”的解決方法

vsphere-client在訪問VCSA間突然卡死,無法刷新,但是能ping通VCSA,過了好會兒,刷新瀏覽器,顯示如下錯誤:503 Service Unavailable (Failed to connect to endpoint: [N7Vmacore4Http20NamedPipeServiceS

關於error: Microsoft Visual C++ 14.0 is required.的問題(已解決

1. error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build

安裝jdk1.8,導致DbVisualizer無法使用的情況解決

今天專案用到了最新的jdk1.8結果DbVisualizer不好用了; 解決方案: 配置一個環境變數: 變數名: DBVIS_JAVA_HOME 路徑:(指向jdk即可) C:\Program Files (x86)\Java\jdk1.6.0_39

CentOS7 無法啟動,enter emergency mode Failed to mount /sysroot 解決方法

CentOS7 無法啟動,進入緊急模式,enter emergency mode 根據提示檢視日誌,發現報錯:Failed to mount /sysroot 根據,老外的網站提供的線索: 執行這個命令 # xfs_repair -v -L /dev/dm-0 然後

from 子句語法錯誤 解決方法

nbsp -1 alt http 1-1 解決 語法 ges cnblogs 解決方法: 報錯from 子句語法錯誤 解決方法

c++連接mysql數據庫出現無法解析外部符號的問題

vs、解析外部符號include,lib文件夾都已經拷到了項目根目錄,並且設置好了路徑,生成就會出現無法解析的外部符號,提示我無法轉到函數的定義,最後發現vs2017默認win32,但是我的程序集64位的。更改後,重新設置目錄,路徑即可。c++連接mysql數據庫出現無法解析外部符號的問題

Arcgis Javascript中geometryEngine’hq‘of undefined的解決方法

可能 自己 defined geometry 沒有 星期 不同 arc 修改 這個問題困擾了我一個星期,原因是使用geomagicbuffer時候,有的線可正常使用,有的就直接報錯,一直沒有解決,後來發現是api自己的bug導致的 幹脆直接讀代碼,在geometryEng

android -------- 安裝APK:Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE解決方法

記錄一個 DELETE_FAILED_INTERNAL_ERROR Error while Installing APK問題 之前遇到這個問題 方案1 將data/data/目錄下該應用的包名的目錄刪除掉,如:adb shell rm -rf data/data/c

Ubuntu sudocommand not found的解決方法

Ubuntu系統操作中,在使用sudo的時候出現sudo:source:command not found錯誤提示,遇到這種問題要如何處理呢?下面小編就給大家介紹下Ubuntu系統中報錯sudo:source:command not found的解決方法。   Ubuntu

mysql登入ERROR 1045 (28000) 的解決方法

問題描述:     mysql -u root -p命令登入MySQL,提示ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 解決辦法: information_schema 庫的USER

Linux 編譯 -- undefined reference to 問題解決方法 (具體'pthread_create'和opencv看文章最後兩條)

最近在Linux下程式設計發現一個詭異的現象,就是在連結一個靜態庫的時候總是報錯,類似下面這樣的錯誤: (.text+0x13): undefined reference to `func'     關於undefined reference這樣的問題,大家其實經常會遇到

Android安裝APK:Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE解決方法

           今天除錯一個android應用的時候,安裝報了Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE錯誤,程式碼如下:[2015-12-28 15:54:31 - MainActivity] ----

android studio Failed to save settings解決方法

1.先Enable Android SUPPORT,可以在file->setting->plugin設定2.嘗試刪除C:\Users\Administrator下面的.AndroidStudio/config, .AndroidStudio/system and 

微信公眾號-開發-基本配置-伺服器配置(已啟用) 修改提交:token驗證失敗 解決方法

微信公眾號-開發-基本配置-伺服器配置(已啟用)  修改提交報錯:token驗證失敗使用php開發需要修改程式碼,在if($this->checkSignature()){  和  echo $echoStr;之間新增ob_clean();  作用是清理伺服器端資訊的快

ubuntu 執行apt-get installFailed to fetch的解決方法

最近在除錯mcuzone的nuc972開發板,用了他們給的虛擬機器,在apt-get install vim 時出現Failed to fetch的問題,在網上找了找,有人說是DNS伺服器沒有設定對,有人說需要使用阿里雲的伺服器,國外的伺服器被和諧了,根據這兩種方式修改後還是

MySQL5.6 GTID模式,同步複製不能跳過解決方法

搭建虛擬機器centos6.0, mysql5.6.10主從複製,死活不同步,搞了一整天找到這篇文章。終於OK了。 資料庫版本: mysql> select version();  +------------+  | version()  |  +----------