C++ 全局函数头及其实现

C++ 全局函数头及其实现,c++,C++,如何划分全局函数的头和实现 我的方式是: split.h #pragma once #include <string> #include <vector> #include <functional> #include <iostream> void split(const string s, const string c); main.cpp // main.cpp : Defines the entry point for the cons

如何划分全局函数的头和实现

我的方式是:

split.h

#pragma once

#include <string>
#include <vector>
#include <functional>
#include <iostream>

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++不支持默认int…\SPL.H 8

错误2错误C2146:语法错误:缺少“,”在标识符的“…\split.h8”之前


我怎样才能解决这个问题?thx

在头文件中使用std::namespace qualifier-std::string

在头文件中使用std::namespace qualifier-std::string

至少有一个问题是,您在split.h:

#pragma once

#include <string>
#include <vector>
#include <functional>
#include <iostream>

void split(const std::string s, const std::string c);

至少有一个问题是,split.h:

#pragma once

#include <string>
#include <vector>
#include <functional>
#include <iostream>

void split(const std::string s, const std::string c);

在头文件中,必须提供完全限定的名称std::string。在源文件中,可以使用名称空间std添加;或者使用std::string;然后把它拼成字符串


另外,您已经声明了按值获取参数的函数,但定义了按引用获取参数的函数。

在头文件中,您必须给出完全限定名std::string。在源文件中,可以使用名称空间std添加;或者使用std::string;然后把它拼成字符串


另外,您已经声明了按值获取参数的函数,但定义了按引用获取参数的函数。

我想您可能忘记了使用std::string;在分割声明之前,或使用std::string const&作为分割参数声明


另外,拆分声明与拆分定义字符串常量和字符串常量不匹配&

我认为您可能忘记了使用std::string放置;在分割声明之前,或使用std::string const&作为分割参数声明


标准库中的拆分定义字符串常量与字符串常量的拆分声明不匹配&

类位于std::namespace中。不要在头文件中使用名称空间,请完全限定名称。为了保持一致性,您也可以尝试在源文件中改掉这个习惯。第二个错误是由字符串引起的,该字符串必须是std::string,除非您指定使用std::string;。标准库中的类位于std::namespace中。不要在头文件中使用名称空间,请完全限定名称。为了保持一致性,您也可以尝试在源文件中改掉这个习惯。第二个错误是由字符串引起的,该字符串必须是std::string,除非您指定使用std::string;。