2016-01-29 2 views
1

Привет У меня есть простая программа с main.cpp и a.h и a.cpp. Я хотел бы определить класс в a.cpp и просто позвонить по методу класса в main.cppРабота с разными файлами в C++

мой a.h:

#include <iostream> 
using namespace std; 

class Hello 
{ 
string hello(); 
}; 

мой a.cpp

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

string class Hello::hello(){return "hello world";}; 

моя главная .cpp

#include "a.h" 

int main() 
{ 
    Hello h; 
    cout << h.hello(); 


} 

EDIT: изменил include"a.cpp" к a.h и добавил строку к определению метода hello. Добавлена ​​#include <string> ах

при компиляции я получаю ошибку

«a.cpp: 4: 22: ошибка: 'Привет' в 'класса Hello' не называет струнный класс типа Привет :: привет() {return "Hello";}; "

«a.cpp: 4: 28: error: expected unqualified-id before ')' token string class Hello :: hello() {return" Hello ";};"

+3

Сделать его 'string Hello :: hello() {return" hello world ";}' Вам также нужно '#include ' в заголовке. –

+1

Никогда не помещайте 'using namespace' в глобальную область заголовка. Это повлияет на все файлы, включая заголовок. – doc

ответ

1

простая проблема, вы объявили функцию как часть вашего класса:

class Hello { 
// ^Function is part of the class Hello. 

string hello(); 
// ^Function returns a string 
//  ^Function is called "hello" 
//   ^Function takes no arguments. 

Итак, когда вы идете, чтобы определить функции необходимо предоставить компилятору ту же информацию:

string Hello::hello() { 
// ^Function returns a string 
//  ^Function is part of the class Hello 
//    ^Function is called "hello" 
//     ^Function takes no arguments. 
  • Вам также необходимо добавить в свой файл заголовок <string>, чтобы облегчить использование объекта string.
  • Ваш '#include "a.cpp" должен быть #include "a.h", эмпирическое правило - вы никогда не должны видеть #include file.c/cpp.
  • Наконец, вам нужно будет сделать функцию hello общедоступной, чтобы разрешить ее использование вне класса.

Here is a live example for you to play with.

Но самый лучший совет, который я могу дать, это подобрать C++ начинающих книга. Это принесет вам мир добра. The Definitive C++ Book Guide and List

+0

Я пробовал это решение, но я продолжаю получать ошибку: a.cpp: 4: 22: error: 'hello' in 'class Hello' не называет тип string class Hello :: hello() {return "Hello" ;}; ^ a.cpp: 4: 28: error: ожидается unqualified-id before ')' token string class Hello :: hello() {return "Hello";}; во время компиляции я использую g ++ для компиляции –

+0

Прочтите мой ответ еще раз. Вы не инвестировали время, чтобы прочитать его правильно. Посмотрите на живой пример. –

+0

Решила большое спасибо, извините за то, что не увидела его сейчас так ясно –

0
class Hello::hello(){return "hello world";}; // Replace it 
     // with 
string Hello::hello(){return "hello world";}; // hello() has string return-type 

Кроме того, добавьте string заголовок-файла в файл

Смежные вопросы