嗨,我刚刚开始学习C++。我买了一本很大的C++ for Dummies的书,并且一直在看。到目前为止真的很有趣,但现在我被卡住了。我一直在谷歌上搜索这个问题,但一无所获。我正在使用我正在使用的代码块10.05和GNU的GCC。
我一直收到这样的错误:
In function 'main':
undefined reference to 'SafeCracker(int)'代码并不复杂。我是个新手,感到非常沮丧。我不想跳过这一部分;我想知道发生了什么。
Main:
#include <iostream>
#include "safestuff.h"
using namespace std;
int main()
{
cout << "Surprise, surprise!" << endl;
cout << "The combination is (once again)" << endl;
cout << SafeCracker(12) << endl;
return 0;
}功能:
#include <iostream>
using namespace std;
string SafeCracker(int SafeID)
{
return "13-26-16";
}标题:
using namespace std;
#ifndef SAFESTUFF_H_INCLUDED
#define SAFESTUFF_H_INCLUDED
string SafeCracker(int SafeID);
#endif // SAFESTUFF_H_INCLUDED发布于 2012-10-26 08:26:34
您没有编译与第一个文件一起列出的第二个文件。试着直接用gcc编译来理解这一点。
假设您的文件名为:
这就是你正在做的事情
gcc main.cpp
当你应该这样做时
gcc main.cpp SafeCracker.cpp
此外,为了清楚起见,SafeCracker.cpp还应该包含头文件。你有什么理由把它们分开吗?
另外,从Daniel Hu的回答中可以看出,<iostream>会自动为您包含<string>。您不应依赖此功能,而应在使用字符串的每个文件中包含<string>。
(来自下面的评论)您可能正在尝试将main.cpp构建为一个独立的文件。这将使SafeCracker.cpp无法编译。您需要的是在Codeblock中创建一个项目,并将所有三个文件(包括*.cpp文件和*.h文件)添加到其中。
发布于 2012-10-26 08:26:12
我想是因为你没有#include <string>
C++必须导入字符串库才能使用字符串,否则一切都会被视为字符数组。
https://stackoverflow.com/questions/13079174
复制相似问题