gpt4 book ai didi

c++ - 静态变量链接错误

转载 作者:IT老高 更新时间:2023-10-28 13:20:29 25 4
gpt4 key购买 nike

我正在 Mac 上编写 C++ 代码。为什么编译的时候会出现这个错误?:

Undefined symbols for architecture i386: "Log::theString", referenced from: Log::method(std::string) in libTest.a(Log.o) ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

不确定我的代码是否错误,或者我必须向 Xcode 添加其他标志。我当前的 XCode 配置是“静态库”项目的默认配置。

我的代码:

Log.h------------

#include <iostream>
#include <string>

using namespace std;

class Log{
public:
static void method(string arg);
private:
static string theString ;
};

Log.cpp ----

#include "Log.h"
#include <ostream>

void Log::method(string arg){
theString = "hola";
cout << theString << endl;
}

我从测试代码中调用“方法”,方式如下:'Log::method("asd"):'

感谢您的帮助。

最佳答案

您必须在 cpp 文件中定义静态参数。

日志.cpp

#include "Log.h"
#include <ostream>

string Log::theString; // <---- define static here

void Log::method(string arg){
theString = "hola";
cout << theString << endl;
}

您还应该从标题中删除 using namespace std;。在你还可以的时候养成这个习惯。这将在包含 header 的任何位置使用 std 污染全局命名空间。

关于c++ - 静态变量链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282354/

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