使用两个cpp文件时使用未声明的标识符
Use of Undeclared Identifier when Using two cpp files
我是c++的新手,所以我仍然不清楚如何将文件链接在一起等等。我正在做一个练习,其中我有一个测试文件bob_test.cpp,其开头如下:
#include "bob.h"
#define BOOST_TEST_MAIN
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_CASE(stating_something)
{
BOOST_REQUIRE_EQUAL("Whatever.", bob::hey("Tom-ay-to, tom-aaaah-to."));
}
在练习中,由我来编写"bob.cpp",所以我的问题是,我如何编写它,以便测试文件能够识别它?目前,我在倒数第二行得到一个"使用未声明的标识符'bob'"。我使用的是Xcode,我有一个bob.cpp和bob.h,几乎是空的。
谢谢。
当您看到类似的东西时
bob::hey("Tom-ay-to, tom-aaaah-to.")
bob
必须是在bob.h
中声明的命名空间或类。该文件可以被称为任何东西——它不必与作用域解析运算符::
左侧的内容相匹配。
你必须在其他地方(可能在bob.h
中)有这样的东西:
class bob
{
public:
static std::string hey(const std::string &s);
}
或者,可能性稍小的
namespace bob
{
std::string hey(const std::string &s);
}
这包含在bob_test.cpp
(由您的#include "bob.h"
)预处理器指令中。
/// bob.cpp
#include "bob.h"
#include <string>
std::string bob::hey(const std::string &s)
{
return "asdfasdfasdf";
}
标头,如bob.h
,包含基本上是接口定义的内容(尽管它们也可能包含实现——这是另一个讨论)。声明
#include "bob.h"
告诉编译器,在编译过程中,它应该打开bob.h
,直接粘贴该文件的内容来代替#include
指令,然后编译.cpp
,就像您自己将头的内容放在cpp中一样。
如果你想把这些东西教给自己,祝贺并坚持下去!
如果这是家庭作业,我建议你在上班时间拿一块白板,向老师提问,直到问题清楚为止。教员的工作就是让这些内容尽可能清晰易懂。(我教书——让事情变得清楚并不总是容易的,我欢迎学生们提出问题。最终,我希望我的所有学生都能理解并热爱他们所做的事情。)
相关文章:
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- Google protobuf 时间戳未声明标识符,在 Windows 上具有C++
- 我的函数调用 (C++) 中的未声明标识符
- 具有继承的未声明标识符(运算符 ostream)
- 无法确定 IDE 在 C++ 中说出未声明标识符的原因
- 错误 C2065:'lO':用于声明向量值的未声明标识符?
- 可变参数模板的未声明标识符
- 动态变量上的c++MACRO未声明标识符
- 指向对象的指针的未声明标识符向量
- 简单C++程序上的多个未声明标识符
- C++类"未声明标识符"
- 计算文本文件中的整数数(使用 fin>>x 的未声明标识符)
- 编译器错误 xcode 未声明标识符 C++
- 直接 X 11 纹理 FX 文件错误 X3004 未声明标识符"input"
- GCC 未声明标识符"_asm"
- ios_base类的C++未声明标识符
- 未声明标识符SQL_SS_TABLE
- 使用arrayfire的未声明标识符
- 未声明标识符和标识符未定义是什么意思?如何修复错误
- 在 MacOS 上使用 OpenMPI C++语法时未声明标识符'MPI'