gpt4 book ai didi

c++ - undefined reference - C++ 链接器错误

转载 作者:搜寻专家 更新时间:2023-10-31 00:05:56 28 4
gpt4 key购买 nike

我收到一条 undefined reference 错误消息,关于这个声明:

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;
}

最佳答案

您是否正在尝试实现单例类? IE。您只需要该类的一个实例,并且您希望该实例可供包含该类的任何人使用。我认为它通常被称为 Singleton,以下示例按预期工作:

单例.h:

#include <string>
class Singleton
{
public:
static Singleton* instance()
{
if ( p_theInstance == 0 )
p_theInstance = new Singleton;
return p_theInstance;
}
void setMember( const std::string& some_string )
{
some_member = some_string;
}
const std::string& get_member() const
{
return some_member;
}

private:
Singleton() {}
static Singleton* p_theInstance;
std::string some_member;
};

单例.cpp:

Singleton* Singleton::p_theInstance = 0;

主要.cpp:

#include <string>
#include <iostream>
#include "Singleton.h"

int main()
{
std::string some_string = "Singleton class";
Singleton::instance()->setMember(some_string);
std::cout << Singleton::instance()->get_member() << "\n";
}

请注意,构造函数是私有(private)的,我们不希望任何人创建我们的单例实例,除非是通过“instance()”运算符。

关于c++ - undefined reference - C++ 链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1122938/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com