2013-09-30 37 views
1

我試圖寫我的C++程序在不同的文件中,但我似乎無法得到它的工作。有人能幫我嗎?C++單獨的函數文件

separate.cpp

#include "separate.h" 
#include <iostream> 

void Separate() { 

cout << "text"; 

} 

separate.h

#include <string> 
using namespace std; 

class OneLine { 

    Separate(); 

private: 
    string vari; 

}; 

的main.cpp

#include "separate.cpp" 
#include <iostream> 

using namespace std; 

int main() { 

    Separate s; 
    s(); 

return 0; 
} 
+1

如何做這項工作在一個單一的文件?你正在聲明一個'OneLine'類的'Separate'函數,然後嘗試創建一個'Separate'對象。 –

+0

建議:首先包括已批准的標題: #include than #include「separate.h」 –

+1

您應該避免使用名稱空間標準,特別是在標題中。見[這裏](http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice)。 – juanchopanza

回答

3

兩個基本錯誤:

separate.cpp,你需要

void OneLine::Separate() { /*...*/ } 

main.cpp你想創建類型的對象,並調用定義的方法上這樣說:

OneLine ol; 
ol.Separate(); 

對於這一點,你需要做的方法public,改變separate.h

class OneLine { 

public: 
    Separate(); 

//... 
}; 

您想要更改一些以下簡單示例所不需要的內容,但從長遠來看它們將變得非常必要:

  • 你要包括警衛,谷歌爲「包括衛士」
  • 你不想using namespace std; - 擺脫它,並添加std::必要
+0

另外,'OneLine :: Separate'目前是私人... – Useless

+0

@Useless是的,我錯過了那一個,並修復了答案。謝謝! –

3

在您的實現定義函數爲:

void OneLine::Separate() { 
    ... 

在你的主,你需要實例化一個ONELINE對象,並調用分離上,即:

OneLine o; 
o.Separate(); 
3

在你的主文件,你需要引用"separate.h"而非"separate.cpp"

seperate.cpp類方法需要與類名作爲前綴:

void Oneline::Separate() 

你也應該創建一個對象類型爲OneLine而非Seperate

所以:

Oneline one; 
one.Seperate(); 
相關問題