您好,我刚开始学习C ++。我为Dummies书买了这个大C ++,并且经历过它。到目前为止它真的很有趣,但现在我被卡住了。我一直在谷歌搜索这个问题,但无济于事。我正在使用我正在使用带有GNU GCC的代码块10.05。
我不断收到错误消息:
In function 'main':
undefined reference to 'SafeCracker(int)'
代码并不复杂。我只是新人,非常沮丧。我不想跳过这一部分;我想知道发生了什么。
主:
#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
答案 0 :(得分:2)
您没有编译第一个列出的第二个文件。尝试直接用gcc编译来理解这一点。
假设您的文件被命名为:
这就是你正在做的事情
gcc main.cpp
虽然你应该这样做
gcc main.cpp SafeCracker.cpp
另外,SafeCracker.cpp也应该包含头文件,只是为了清楚起见。你将它们分开的原因是什么?
另一方面,看到Daniel Hu的回答,<iostream>
会自动包含<string>
给你。您不应该依赖此功能,而应该在每个使用字符串的文件中包含<string>
。
(来自下面的评论) 您可能正在尝试将main.cpp构建为独立文件。这将使SafeCracker.cpp无法编译。您需要的是在Codeblocks中创建一个项目并将所有三个文件添加到它(* .cpp文件以及* .h文件)。
答案 1 :(得分:1)
我认为这是因为你没有#include <string>
C ++必须导入字符串库以使用字符串,否则所有内容都被视为char数组。