我得到一個未定義的引用錯誤訊息,在此聲明:未定義參考 - Visual C++鏈接錯誤
GlobalClass *GlobalClass::s_instance = 0;
任何想法?代碼如下所示:
========================================= =======
#ifndef GLOBALCLASS_H_
#define GLOBALCLASS_H_
#include <string>
class GlobalClass {
public:
std::string get_value();
void set_value(std::string);
static GlobalClass *instance();
static GlobalClass *s_instance;
private:
std::string m_value;
};
#endif /* GLOBALCLASS_H_ */
==================================== ===========
#include <string>
#include "GlobalClass.h"
/*
GlobalClass(int v = 0)
{
m_value = v;
}
*/
static GlobalClass *s_instance;
std::string GlobalClass::get_value()
{
return m_value;
}
void GlobalClass::set_value(std::string v)
{
m_value = v;
}
static GlobalClass *instance() {
if (!s_instance)
s_instance = new GlobalClass;
return s_instance;
}
================================ ===========================
#include <iostream>
#include "GlobalClass.h"
using namespace std;
int main() {
GlobalClass::s_instance = 0;
std::string myAddress = "abc";
GlobalClass::instance()->set_value(myAddress); \\ <=== compiler error
std::cout << "====>address is is " << GlobalClass::instance()->get_value()
<< std::endl;
return 0;
}
你有兩個GlobalClass定義,一個沒有s_instance ...可能會導致混淆? – Eli 2009-07-14 00:54:59
Doh,我複製了錯誤的文件 - 謝謝。 – 2009-07-14 01:08:12
你一直在編輯正文。GlobalClass :: instance() - > set_value(myAddress)或GlobalClass * GlobalClass :: s_instance = 0是否出錯?目前尚不清楚。 – 2009-07-14 01:11:51