嗨,我希望这是一个快速的问题。作为家庭作业的一部分,我被要求编写自己的模板矢量类(大多数代码都在那里,只需要扩展)。虽然我理解它如何工作以及它做了什么我不知道在哪里放置代码或引用它,因为我从未在程序中的上下文中看到它。
我是否创建了一个包含所有这些信息的新cpp文件,或者我只是将其添加到我的main方法之上?如果我创建一个新文件(cpp或h)我如何引用它,只需要#include就像正常一样?
这可能看起来相当简单,但我尝试创建一个新的.h文件,然后将其包含在我的主程序中,但我总是得到范围定义错误。
答案 0 :(得分:2)
大多数编译器都要求您将所有模板代码放在头文件中,而不是源文件中。这是由于模板扩展的工作方式。您只需在任何需要使用矢量类的文件中包含该标题。
创建标题时需要注意的一些事项:
#pragma once
,您可以将其放在顶部,否则使用#ifndef MY_HEADER_H .......
模式。using namespace whatever;
放在标题的外部范围内(可以在块范围内使用它,例如namespace something { ... }
或函数)。std::vector
,请注意与vector
的名称冲突 - 确保在包含您的标题之前没有人导入std
命名空间。答案 1 :(得分:1)
您需要记住的一点是,由于模板的编译模型,您应该将模板声明和定义放在头文件中。
您可以为模板化矢量类创建一个头文件,并在您希望在其他.h
或.cpp
文件中使用时包含此头文件。
您也可以将它们放在main
内,但前一个选项最适合您维护代码。