2013-09-30 3 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», но затем пытаетесь создать объект «Разделить». –

+0

Совет: Включите одобренные заголовки: #include than #include "separate.h" –

+1

Вам следует избегать использования пространства имен std, особенно в заголовках. См. [Здесь] (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(); 

//... 
}; 

Вы хотите изменить несколько вещей, а также которые не нужны для этого простого примера, но они станут необходимы в долгосрочной перспективе:

  • Вы хотите включить охрану, Google для «включают охрану»
  • Вы не хотите using namespace std; - избавиться от него и добавить std:: где необходимо
+0

Кроме того, 'OneLine :: Separate' в настоящее время является приватным ... – Useless

+0

@ Бездумно Да, я пропустил этот и исправил ответ. Благодаря! –

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(); 
Смежные вопросы