全局函数头和实现

时间:2010-03-02 22:35:31

标签: c++

如何划分标题和全局函数的实现?

我的方式是:

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

4 个答案:

答案 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 conststring const&

中拆分声明不匹配