2013-09-30 97 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(); 
相关问题