在标头 C++ 中使用 STL 进行函数声明
function declaration with STL in header c++
我对将程序拆分为header
等的概念很陌生。 通常,它没问题,但是在这种情况下,如果我尝试下一步,我会遇到一大堆错误:
假设我有一个.cpp文件:
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
#include <vector>
#include "Header.h"
using namespace std;
int main() {
//some code here
}
map <char, char> create(vector <char> &one, vector <char> &two) {
//some code here
}
vector <char> conc(string phrase) {
// some code here
}
vector <char> result(vector<char> three, map <char, char> code) {
// some code here
}
Header.h
我有:
map <char, char> create(vector <char> &one, vector <char> &two);
vector <char> conc(string phrase);
vector <char> result(vector<char> three, map <char, char> code);
这只是函数声明。如果我将它们放在.cpp程序运行良好,但如果在 Header.h 中 - 它不会。你能告诉我这里缺少什么吗?
我正在阅读有关 cprogramming.com 拆分的概念,但他们从未使用 STL 的例子。谢谢!
你在 cpp 文件中使用 using namespace std;
,但不在标头中使用(也不要在标头中使用它),所以你应该使用完全限定的类型名称:
#ifndef HEADER_H
#define HEADER_H
#include <string>
#include <map>
#include <vector>
std::map <char, char> create(std::vector <char> &one, std::vector <char> &two);
std::vector <char> conc(std::string phrase);
std::vector <char> result(std::vector<char> three, std::map <char, char> code);
#endif // HEADER_H
这主要是一个有根据的猜测,因为您没有发布实际错误或整个代码。
每个 STL 类名之前都缺少std::
,因为不应在头文件中使用using
语句。
例: std::map <char, char> create(std::vector <char> &one, std::vector <char> &two);
还要确保在头文件的顶部有正确的包含语句(<vector>
等)。
相关文章:
- 有没有办法捕获 STL 函数未被赋予正确参数的异常?
- 如何在 STL 函数中找到传递给谓词的元素的索引?
- 不能对类型化模板使用 STL 函数
- 如何使用 binary_search STL 函数在嵌套类中搜索整数?
- C++ 如何将参数传递给 STL 函数
- STL 函数和函数类型与函数指针类型
- 重载 STL 函数
- 为什么 STL 函数使用节点的颜色来计算 std::map 节点前身
- 我可以期望某些 STL 函数实现是可自动矢量化的吗?
- 指针类型上的 STL 函数对象
- 寻找一种更有效的方法来使用 STL 函数检查字符串是否为回文
- 为什么lambda函数用于stl函数,例如sort(),c 中的max_element()函数以两个参数为输入
- 为什么此 stl 函数调用会导致不正确的布尔计算
- 有没有STL函数可以得到两个C++向量的笛卡尔乘积
- 如何测试 C++ STL 函数的成功或失败(在 Microsoft Visual C++ 6.0 中)
- STL 函数类似于排序
- 无论CRT版本如何,这都是在库中提供STL函数的有效方法吗
- 处理容器的每个成员的stl函数是否可以接受外部参数
- STL函数,用于测试值是否在某个范围内
- 如何"count_if"字符串的 -STL 函数?