Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 23.08.2011
Сообщений: 6
1

Почему не компилируется заголовочный файл?

23.08.2011, 02:35. Показов 3195. Ответов 11
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//run.cpp
#include <iostream>
using std::cout;
using std::endl;
 
#include "GradeBook.h"
 
int main() {
    GradeBook gradeBook1("CS 101 Programming");
    GradeBook gradeBook2("CS 102 Data Structures");
 
    cout << "gradeBook1 created for: " << gradeBook1.getCourseName()
        << endl;
    cout << "gradeBook2 created for: " << gradeBook2.getCourseName()
        << endl;
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//GradeBook.cpp
#include <iostream>
using std::cout;
using std::endl;
 
#include "GradeBook.h"
 
GradeBook::GradeBook(string name) {
    setCourseName(name);
}
 
void GradeBook::setCourseName(string name) {
    courseName = name;
}
 
string GradeBook::getCourseName() {
    return courseName;
}
 
void GradeBook::displayMessage() {
    cout << "Welcome to the grade book for\n" << getCourseName()
        << "!" << endl;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//GradeBook.h
#include <string>
using std::string;
 
class GradeBook {
public:
    GradeBook(string);
    void setCourseName(string);
    string getCourseName();
    void displayMessage();
private:
    string courseName;
}
подскажите, почему не компилирует заголовочный файл? (абсолютный новичок в Visual)
0
Заказывайте контрольные, курсовые и дипломы здесь.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.08.2011, 02:35
Ответы с готовыми решениями:

Заголовочный файл, который компилируется в VS2017, не компилируется в Qt
В общем был класс &quot;Матрицы&quot;, который нормально работал в VS2017. Возникла необходимость...

Почему нельзя компилировать отдельный заголовочный файл?
Вообще можно весь код поместить в один .cpp файл. Но, как я понимаю, люди советуют все функции...

Почему Не Определён Ctrcmp, тема про заголовочный файл string.h
Здравствуйте вот код, компилятор пишет что не определён ctrcmp, заголовочный файл писал по разному...

Объявления классов в *.h, или почему просто не приписать заголовочный файл #include <QProgressBar>?
Доброго времени суток. Не пойму почему Шлее в хэдерах объявляет классы следующим образом: ...

11
Модератор
Эксперт по электронике
8381 / 6225 / 837
Регистрация: 14.02.2011
Сообщений: 21,617
23.08.2011, 03:23 2
Что есть
Цитата Сообщение от hedgehog23 Посмотреть сообщение
не компилирует
????
0
10 / 10 / 0
Регистрация: 02.08.2011
Сообщений: 28
23.08.2011, 07:29 3
на вскидку:

C++
1
2
3
private:
        string courseName;
};
Попробуй поставить точку с запятой после определения класса
1
Заблокирован
Автор FAQ
23.08.2011, 09:42 4
Вот так сделай
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//GradeBook.h
 
#ifndef GRADEBOOK_H
#define GADEBOOK_H
#include <iostream>
#include <string>
using std::string;
 
#pragma once//если не будет компилиться убери, но думаю всё норм сразу будет
 
class GradeBook {
public:
        GradeBook(string);
        void setCourseName(string);
        string getCourseName();
        void displayMessage();
private:
        string courseName;
}
#endif
 
//GradeBook.cpp
#include "GradeBook.h"//Как бы компилятор догадался об объявлении класса без хедера???)
using std::cout;
using std::endl;
 
GradeBook::GradeBook(string name) {
        setCourseName(name);
}
 
void GradeBook::setCourseName(string name) {
        courseName = name;
}
 
string GradeBook::getCourseName() {
        return courseName;
}
 
void GradeBook::displayMessage() {
        cout << "Welcome to the grade book for\n" << getCourseName()
                << "!" << endl;
}
Добавлено через 1 минуту
В //run.cpp, подключай только GradeBook.h и старайся избегать повторных подключений заголовчных файлов, у тебя это с iostream наблюдалось
0
Делаю внезапно и красиво
Эксперт С++
1311 / 1226 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.08.2011, 07:16 5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
старайся избегать повторных подключений заголовчных файлов
Какой смысл этого действа?

Цитата Сообщение от hedgehog23 Посмотреть сообщение
почему не компилирует заголовочный файл?
Заголовочные файлы ВООБЩЕ никогда и ни у кого не компилируются.
0
Модератор
Эксперт по электронике
8381 / 6225 / 837
Регистрация: 14.02.2011
Сообщений: 21,617
24.08.2011, 08:01 6
Цитата Сообщение от Deviaphan Посмотреть сообщение
Заголовочные файлы ВООБЩЕ никогда и ни у кого не компилируются.
Ну это как посмотреть
по грубому
весь текст копируется в файл кода
а потом то все равно компилится
0
Делаю внезапно и красиво
Эксперт С++
1311 / 1226 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.08.2011, 08:05 7
Цитата Сообщение от ValeryS Посмотреть сообщение
Ну это как посмотреть
Я смотрю более очевидно. Для файла реализации команда Compile есть, а для заголовков - нет.
0
Заблокирован
Автор FAQ
24.08.2011, 17:55 8
Цитата Сообщение от Deviaphan Посмотреть сообщение
Какой смысл этого действа?
- Иногда возникают грабли с тем что компилятор пишет на какую нибудь структуру или функцию что она объявлена ранее или в предыдущем блоке, у меня возникала подобная гадость когда делал CDWriter, копилятор ругался на интерфейсы IMAPI...
0
Делаю внезапно и красиво
Эксперт С++
1311 / 1226 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.08.2011, 19:01 9
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Иногда возникают грабли...
Это грабли с программистом, который не использует '#pragma once' или '#ifdef/#endif'.
Из-за криворукости же программистов возникают вот такие зависимости от порядка включения файлов. Очень расстраиваюсь, когда такое появляется, но бывает, да.(
0
Модератор
Эксперт по электронике
8381 / 6225 / 837
Регистрация: 14.02.2011
Сообщений: 21,617
24.08.2011, 19:43 10
не всегда
Цитата Сообщение от Deviaphan Посмотреть сообщение
#pragma once' или '#ifdef/#endif'.
спасают например нужна глобальная переменная видимая в разных модулях и мы пишем
C++
1
2
3
// global.h
 
int i;
и подключаем к разным с-файлам
Готово! получили при линковке "уже определена"
правда согласен с тем, что
Цитата Сообщение от Deviaphan Посмотреть сообщение
Это грабли с программистом,
предвидя вопросы делать надо так
в одном из файлов пишем
C++
1
2
3
// xxxxx.c
 
int i;
в заголовочном
C++
1
2
3
// Global.h
 
extern int i;
0
Делаю внезапно и красиво
Эксперт С++
1311 / 1226 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.08.2011, 19:46 11
Цитата Сообщение от ValeryS Посмотреть сообщение
Готово! получили при линковке "уже определена"
Если программист идиот, то это надолго.)))

Цитата Сообщение от ValeryS Посмотреть сообщение
в одном из файлов пишем
Или static. Всякие ситуации бывают.)
0
3 / 3 / 3
Регистрация: 31.10.2010
Сообщений: 120
22.10.2011, 00:35 12
C++
1
private: System::Void openTSMI_Click(System::Object^  sender, System::EventArgs^  e);
метод в
C++
1
"FrequencyDictionary.h"
cpp файл:
C++
1
2
3
4
5
#include "StdAfx.h"
#include "FrequencyDictionary.h"
void FrequencyDictionary::System::openTSMI_Click(System::Object^  sender, System::EventArgs^  e)
{
}
как правильно сделать? по-разному пробовал, эффет 0(
Подскажите, пожалуйста.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2011, 00:35

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

почему не компилируется ? (сбой при преобразовании в COFF: файл недопустим или поврежден)
почему не компилируется ? ( #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; int...

Почему GCC не компилирует заголовочный файл пользователя ?
Здравствуйте ! При компиляции учебной программы в GCC, выдаётся сообщение &quot;No such file or...

Почему *.java файл компилируется без компилятора?
Друзья! IDE NetBeans 7.3.1. JDK установлена отдельно, там нахожу javac.exe и переименовываю его в...

Вынос шаблонной функции в заголовочный файл и файл с реализацией
Имеется шаблонная функция, которую я помещаю в файл реализации templ.cpp: #include...

Почему возможно задать массив с размером -1 (почему такое вообще компилируется)?
Всем привет. Долгое время не писал на плюсах, решил пройтись по основам, вспомнить. По...

Заголовочный файл
Написал в заголовочном файле вот такой код: #ifndef SALES_DATA_H #define SALES_DATA_H #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.