2015-04-17 24 views
-2

如何声明在头文件中返回字符串的函数,以便其他* .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 

如果我替换stringchar*,它编译没有错误。

+5

你忘了'std ::',字符串是在一个名字空间内声明的 – Borgleader

回答

2

什么:

std::string MyFunc(); 

你需要,除非你使用的命名空间添加std::前缀。一般来说,你也可以加上前缀以避免与你自己的类冲突。