2016-08-11 76 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文件。