Проблема с классами. Пожалуйста помогите
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Это маин был!
Это было Отделение данных от логики
ну а это уже расширение .h, тоесть продолжение отделения.
Так вот. компилирую прогу (прога простая я только хочу научиться более-менее автономно это делать самому, что честно не выходит пока). Но выбивает ошибка в третьем коде с .h
в чём ошибка? — пишет что ошибка и интом в начале кода... ну вот впрочем:
(class)\kal.h [Error] expected unqualified-id before 'int'
(class)\kal.h [Error] expected ')' before 'int'
и далее пошли ошибки того типа из-за этой одной... что делать?
Тип
int
не описывается в пространстве имёнstd
. Поэтому компилятор ругается.int
— предопределённый тип.В остальных файлах тоже поправь.
<iostream>
нужен только вmain
.<fstream>
— вообще не нужен.В
main
нужно включать вместоkal.cpp
—kal.h
, аkal.cpp
подключать в проекте (компилируется отдельно отmain
, подключается сборщиком при создании исполняемого файла).Спасибо большое!
можете объяснить?
Я попробую объяснить...
Создание исполняемого файла издавна производилось в два этапа: (1) компиляция исходного текста программы в объектный код и (2) сборка (линковка) объектных модулей, включая объектные модули из объектных библиотек, в исполняемый файл. Это классическая схема для компилируемых языков. (Сейчас уже используются и другие схемы.)
То, для чего успешно проходит этап (1), называют единицей компиляции.
main.cpp и kal.cpp — должны быть отдельными единицами компиляции.
Для успешной компиляции файла main.cpp необходимо только описание класса kal и его членов. Т.е. то, что содержится в заголовочном файле kal.h. Следовательно в main.cpp надо включить
#include "kal.h"
.Для успешной компиляции файла kal.cpp необходимо описание класса kal и его членов. Т.е. то, что содержится в заголовочном файле kal.h. Следовательно в kal.cpp надо включить
#include "kal.h"
.Сборщик (линкер) получит два объектных файла (main.obj и kal.obj) и свяжет их в один исполняемый файл, по ходу подключив из библиотек все необходимые модули.
А вот как эта схема реализуется — вопрос отдельный. Зависит от того, какие инструменты (IDE, например) ты используешь. Обычно в IDE есть некая сущность, под названием «Проект». Там аккумулируется информация о типе выходного файла или файлов (исполняемый файл, библиотека, консольное или GUI-приложение и т.д.), о разрядности приложения, об опциях компилятора и сборщика, и, наконец, об исходных файлах (исходные тексты, ресурсы, картинки, иконки и пр.). Вот в этом «проекте» у тебя должно быть указано два исходных файла (main.cpp и kal.cpp) и, обычно в отдельной ветке, заголовочный файл kal.h.
Непосредственное включение в main.cpp текста из kal.cpp (
#include "kal.cpp"
) напрочь убивает модульность. Т.е. фактически, с таким же успехом можно было программу не делить на три файла, а писать всё в main.cpp.Обычно так не делают. Это считается плохим стилем программирования.
Пожалуйста срочно надо
Написать программу использующую подпрограмму(функцию)/
Сумма отрицательных элементов массива Y.
Для работы подпрограмма должна использовать только свои локальные переменные и формальные аргументы. В подпрограмме должен осуществляться ввод исходных данных, однократный вызов подпрограммы обработки данных и вывод результата на экран.