2013-11-10 3 views
0

Я сейчас изучаю файлы и классы заголовков, и я не могу заставить их работать. Я не вижу, что я делаю неправильно. Я включил ошибки как комментарии, где компилятор сказал, что были ошибки. Как это исправить?Не удается получить файлы заголовков для работы

main.cpp

#include <iostream> 
#include <conio.h> 
#include "Header.h" //Error: In file included from C:\Users\Brandon\Desktop\ 
          C++ Practice\Header Practice\Main.cpp 

int main() 
{ 
    Header Test; 
    Test.Header(); Error: invalid use of `class Header' 

    getch(); 
    return 0; 
} 

header.h

#ifndef Header_H_ 
#define Header_H_ 

class Header 
{ 
public: 
     void Header(); //Error: return type specification for constructor invalid 
}; 

#endif // Header_H_ 

и Header.cpp.

#include "Header.h" 

Header::Header() 
{ 
std::cout << "Everything is working./n" << std::flush; 
}; 
+2

Конструкторы не имеют спецификатор типа. Удалите 'void' из' void Header(); 'в Header.h – Machtl

ответ

0

void удалить из void Header(); в Header.h

в Header.cpp, удалите точку с запятой:

#include "Header.h" 

Header::Header() 
{ 
std::cout << "Everything is working./n" << std::flush; 
}; <------ REMOVE SEMICOLON 

в main.cpp - вы вызываете конструктор неправильно, делая это Test.Header().

вы должны делать либо Header Test; или Header *Test = new Header()

+0

Я сделал все, что вы сказали, но я получаю ошибку компоновщика. В нем говорится: «[Ошибка ссылки] неопределенная ссылка на« Заголовок »(Header) :: Header()». Как это исправить? Это было вызвано после того, как я удалил Test.Header(). – Brandon

+0

@BrandonHoutzer. Как вы его компилируете. Похоже, вы просто компилируете main. 'g ++ main.cpp Header.cpp' должен работать. –

+0

@BrandonHoutzer ты сделал то, что сказал Локи? на какой платформе вы работаете (Linux, Mac, Windows)? – stellarossa

0

void Удалить из void Header(); линии. Конструкторы объявляются без возвращаемого типа.

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