2016-08-11 78 views
-1

我是一名初学C++程序员。某处有一个简单的错误,但我无法弄清楚它为什么不能编译。Hello World的简单修改

Main.cpp的:

#include <iostream> 
#include <string> 
#include "GUI.h" 
#include "GUI.cpp" 

int main() 
{ 
    Display("Hello World!"); 
    return 0; 
} 

GUI.h

#pragma once 
void Display(std::string param0); 

GUI.cpp

#include "GUI.h" 
void Display(std::string param0) 
{ 
    std::cout << param0; 
} 

错误是:

Namespace "std" has no member "string" and "cout" 

'String' is not a member of 'std' 

'String' undeclared identifier 

syntax error: missing ')' before identifier 'param0' 

'{': missing function header (old-style formal list?) 

然而,当我直接将代码粘贴到Main.cpp的创建

#include <iostream> 
#include <string> 

void Display(std::string param0); 

void Display(std::string param0) 
{ 
    std::cout << param0; 
} 

int main() 
{ 
    Display("Hello World!"); 
    return 0; 
} 

它工作正常,所以问题可能在于不正确使用的#includes的。

我一直认为include指令只是“注入”main.cpp代码,它只是为了组织目的和将代码分成小块,但现在我很困惑。

这段代码应该是这样的,为什么?

这段代码中是否有任何不良的编程习惯?

编辑:感谢您的帮助,终于编译,所以我认为它应该做的那样:

Main.cpp的

#include <iostream> 
#include <string> 
#include "GUI.h" 
int main() 
{ 
    Display("Hello World!"); 
    return 0; 
} 

GUI.h

#pragma once 
#include <iostream> 
#include <string> 
void Display(std::string param0); 

也可以是完成为

#ifndef GUI_H 
#define GUI_H 
#include <iostream> 
#include <string> 
void Display(std::string param0); 
#endif 

GUI.cpp

#include "GUI.h" 
void Display(std::string param0) 
{ 
    std::cout << param0; 
} 
+2

您在GUI.h中缺少#include

+1

请勿包含源文件(.cpp)。 –

+0

[无法重现](http://melpon.org/wandbox/permlink/8wa1G3TpUVC0xEda)。 –

回答

0

你已经忘了补充#include <string>GUI.h。没有必要包含GUI.cpp文件。