我对将程序拆分为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的例子。谢谢!
答案 0 :(得分:5)
您在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
答案 1 :(得分:2)
这主要是一个有根据的猜测,因为你没有发布实际错误或整个代码。
您在每个STL类名称之前缺少std::
,因为您不应在头文件中使用using
语句。
实施例:
std::map <char, char> create(std::vector <char> &one, std::vector <char> &two);
还要确保头文件(<vector>
等)顶部有正确的include语句。