声明在头文件中返回字符串的函数

时间:2015-04-17 17:23:34

标签: c++ header-files

如何声明在头文件中返回字符串的函数,以便其他* .cpp文件可以使用它。

例如,下面的代码没有编译时出现以下错误:

Source.h

#pragma once
#include <string>

string MyFunc();

Source.cpp

#include "stdafx.h"
#include "Source.h"

using namespace std;
string MyFunc()
{
   string str;
   return str;
}

错误

Error   1   error C2146: syntax error : missing ';' before identifier 'MyFunc'  4   1
Error   2   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   4   1
Error   3   error C2872: 'string' : ambiguous symbol    5   1
Error   4   error C2146: syntax error : missing ';' before identifier 'MyFunc'  5   1
Error   5   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   5   1
Error   6   error C2086: 'int string' : redefinition    5   1
Error   7   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   6   1
Error   8   error C2872: 'string' : ambiguous symbol    7   1
Error   9   error C2146: syntax error : missing ';' before identifier 'str' 7   1
Error   10  error C2065: 'str' : undeclared identifier  7   1
Error   11  error C2065: 'str' : undeclared identifier  8   1

如果我将string替换为char*,则会编译没有错误。

1 个答案:

答案 0 :(得分:2)

怎么样:

std::string MyFunc();

除非您使用命名空间,否则您需要添加std::前缀。一般来说,您也可以将其作为前缀,以避免与您自己的类冲突。