如何划分标题和全局函数的实现?
我的方式是:
split.h
#pragma once
#include <string>
#include <vector>
#include <functional>
#include <iostream>
void split(const string s, const string c);
split.cpp
#include "split.h"
void split(const string& s, const string& c){
...
}
的main.cpp
// main.cpp : Defines the entry point for the console application.
//
#include <string>
#include <vector>
#include <functional>
#include <iostream>
#include "stdafx.h"
#include "split.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
vector<string> v;
string s = "The;;woraaald;;is;;not;;enoaaaugh";
string c = " aaa ;; ccc";
split(s,c);
return 0;
}
错误是:
错误1错误C4430:缺少类型说明符 - 假定为int。注意:C ++不支持default-int ... \ split.h 8
错误2错误C2146:语法错误:在标识符'... \ split.h 8
之前缺少','我该如何解决这个问题? THX
答案 0 :(得分:4)
在头文件中使用std :: namespace限定符 - std :: string
答案 1 :(得分:1)
至少有一个问题是,你缺少split.h中的'std ::'名称空间限定符:
#pragma once
#include <string>
#include <vector>
#include <functional>
#include <iostream>
void split(const std::string s, const std::string c);
答案 2 :(得分:1)
在头文件中,您必须提供完全限定名称std::string
。在源文件中,您可以添加using namespace std;
或using std::string;
,然后拼写string
。
此外,您已声明函数按值获取参数,但定义它通过引用接受参数。
答案 3 :(得分:0)
我认为您要么忘记在拆分声明之前放置using std::string;
,要么使用std::string const&
作为拆分参数声明。
此外,还会从拆分定义string const
与string const&