c++ - C++ 中带有字符串 arg 的全局函数

标签 c++ visual-c++

<分区>

编辑:这是固定的

我正在尝试创建一个全局函数,它有一个字符串数据类型的参数。但是我无法让它工作。这是我所拥有的:

////////
//Func.h

#include <string>

#ifndef Func_H
#define Func_H

void testFunc(string arg1);

#endif

////////
// Func.cpp

#include <iostream>
#include <string>
#include "Func.h"
using namespace std;

void testFunc(string arg1)
{
    cout << arg1;
}

当要传递的参数是一个字符串时,这不起作用,但如果我将参数设为整数或字符或其他任何东西(不需要包含任何文件即可工作),那么它就可以正常工作。

基本上,我想做的是在它们自己的 .cpp 文件中有几个函数,并能够在 Main.cpp 中使用它们。我的第一个想法是在头文件中声明原型(prototype)函数,并将头文件包含在我的 Main.cpp 中以使用它们。如果您能想到更好的方法,请告诉我。我对 C++ 不是很有经验,所以我总是乐于接受改进的做事方式。

最佳答案

你忘了命名空间!在声明函数的函数头中

using namespace std;
void testFunc(string arg1);

或者你应该写

void testFunc(std::string arg1);

void testFunc(std::string &arg1); // pointer to string object

或者如果你的函数不会改变对象

void testFunc(const std::string &arg1);

并且不要忘记 Func.cpp,函数实现必须具有与声明相同的参数,以便从另一个文件调用它。

关于c++ - C++ 中带有字符串 arg 的全局函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11894725/

相关文章:

c++ - 类模板特化中模板参数的默认值

c++ - Qt项目C2872错误,生成的ui文件中符号不明确

用于 VS2005 的 C++ std::tr2

c++ - static_cast_tag() 替代最新的 boost 版本

c++ - std::bitset::all 替代之前的 C++11 编译器

visual-c++ - 在VC6中构建,需要unsigned long long

c++ - 如何在静态链接库中强制构建全局对象? [MSVC9]

visual-c++ - 具有二元特征的词袋

c++ - Visual Studio 输出 .obj 但不输出 .lib

c++ - 在 C++ 中将变量作为对线程的引用传递时出现异常错误