Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.04.2022
Сообщений: 9

Защита от повторного определения классов

26.04.2022, 11:23. Показов 2077. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые знатоки. Столкнулся с проблемой: в исполняемом файле ".cpp" содержится описание методов класса из "class.h". Помимо этого, в заголовке "class.h" присутствуют включения других заголовков. Так же, заголовок "class.h" включается в "main.cpp". Компилятор жалуется на множественное определение классов. Стандартная защита не помогает :/
Очень хочется вынести определение методов класса из заголовка, подскажите как это сделать без ошибок?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.04.2022, 11:23
Ответы с готовыми решениями:

Защита от повторного включения файла
Всем приятного дня ! Файл sada.hpp пытаюсь подключить несколько раз. сам файл sada.hpp реализован так #ifndef DEBUG ...

Защита программы от повторного использования
Всем привет, пожалуйста не ругайтесь за дублирование темы, я видел несколько созданных тем про подключение формы vb.net к удаленной базе...

Защита от повторного логина из другого клиента.
Situatciya: User loginetsya v sistemy i esli kto-to khochet s grygogo clienta loginyt'sya s ego loginom to posilat' ego za vodkoj. Kak...

20
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
26.04.2022, 11:28
Цитата Сообщение от SanYong99 Посмотреть сообщение
Компилятор жалуется на множественное определение классов. Стандартная защита не помогает
Кот в студию, телепаты в отпуске.
0
 Аватар для Nishen
1359 / 857 / 366
Регистрация: 26.02.2015
Сообщений: 3,824
26.04.2022, 11:36
Цитата Сообщение от Folian Посмотреть сообщение
Стандартная защита не помогает
Стандартная защита от ошибок компилятор?
0
0 / 0 / 0
Регистрация: 26.04.2022
Сообщений: 9
26.04.2022, 11:40  [ТС]
Защита в виде #pragma once

или конструкции

#ifndef _CLASS_H
#define _CLASS_H
#endif // !_CLASS_H
0
2395 / 1925 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
26.04.2022, 11:46
SanYong99, а весь файл как выглядит?
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
26.04.2022, 11:47
Цитата Сообщение от Nishen Посмотреть сообщение
Стандартная защита от ошибок компилятор?
Ну раз пограмма не запускается - знач защита от дурака сработала; тут ж технологии, а не хуры-мухры
0
0 / 0 / 0
Регистрация: 26.04.2022
Сообщений: 9
26.04.2022, 11:53  [ТС]
Да я прекрасно понимаю что всё сработало так как должно было. Я не понимаю почему оно так работает и как от этой ошибки избавиться...
Извините что не синьор :/
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
26.04.2022, 11:56
Цитата Сообщение от SanYong99 Посмотреть сообщение
Я не понимаю почему оно так работает и как от этой ошибки избавиться
Код покажи, третий раз просятъ.
Тут до вечера на кофейной гуще гадать можно.
0
0 / 0 / 0
Регистрация: 26.04.2022
Сообщений: 9
26.04.2022, 12:05  [ТС]
John Prick

стандартный .cpp с описанием методов класса, больше в нём ничего нет. В заголовке этого класса включается ещё куча заголовков.

Добавлено через 1 минуту
Разбираюсь как это сделать. Тыкаю на все кнопки

Добавлено через 3 минуты
C++
1
2
3
//"WORKER.cpp"
#include "WORKER.h"
//"дальше описание методов"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef _WORKER_H
#define _WORKER_H
//"WORCER.h"
#include"HERBIVORES.h"
#include"CARNIVORES.h"
 
class worker
{
public:
    worker();
    void fead(animal *animal, food *food);
    void get_voice(cow *animal);
    void get_voice(duck *animal);
    void get_voice(biver *animal);
    void get_voice(tiger *animal);
    void get_voice(wolf *animal);
private:
 
};
 
worker::worker() {}
 
#endif// !_WORKER_H
C++
1
2
3
4
5
6
7
//"main.cpp"
#include"WORKER.h"
 
void main()
{
//"тут, собственно мэйн"
}
Добавлено через 2 минуты
возможно, дело в том, что внутри "WORCER.h" включается вообще все остальные файлы заголовков и библиотек (не непосредственно в нём, а в других .h которые в него включены)
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
26.04.2022, 12:05
Лучший ответ Сообщение было отмечено SanYong99 как решение

Решение

Цитата Сообщение от SanYong99 Посмотреть сообщение
worker::worker() {}
Это из хедера высунь.

Цитата Сообщение от SanYong99 Посмотреть сообщение
#include"HERBIVORES.h"
#include"CARNIVORES.h"
В этих c Include guard в порядке всё?
1
фрилансер
 Аватар для Алексей1153
6473 / 5693 / 1131
Регистрация: 11.10.2019
Сообщений: 15,171
26.04.2022, 12:06
и ещё
Цитата Сообщение от SanYong99 Посмотреть сообщение
void int main()
0
0 / 0 / 0
Регистрация: 26.04.2022
Сообщений: 9
26.04.2022, 12:09  [ТС]
да, там всё окей. Везде стоит #pragma once, раньше работала

Добавлено через 1 минуту
Я это запускать вне визуалстудии не буду, void валиден
0
фрилансер
 Аватар для Алексей1153
6473 / 5693 / 1131
Регистрация: 11.10.2019
Сообщений: 15,171
26.04.2022, 12:12
Цитата Сообщение от SanYong99 Посмотреть сообщение
валиден
у меня для тебя плохие новости - программирование на C++ тебе не подходит
0
0 / 0 / 0
Регистрация: 26.04.2022
Сообщений: 9
26.04.2022, 12:15  [ТС]
пока это делается для тестов и обучения, всё ок.
Так конечно нельзя делать в реальных проектах, я не совсем тупой)
0
 Аватар для Nishen
1359 / 857 / 366
Регистрация: 26.02.2015
Сообщений: 3,824
26.04.2022, 12:17
Если в VS делаешь - попробуй либо создать новый проект и дать ему эти файлы, либо полную пересборку запусти.
1
0 / 0 / 0
Регистрация: 26.04.2022
Сообщений: 9
26.04.2022, 12:30  [ТС]
не помогает.

Добавлено через 3 минуты
Если я не создаю второй файл .cpp ("WORKER.cpp"), а определяю методы внутри заголовка("WORKER.h") - всё работает и компилируется. Где-то в этом моенте:
C++
1
2
3
//"WORKER.cpp"
#include "WORKER.h"
//"дальше описание методов"
прячется ошибка
0
2395 / 1925 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
26.04.2022, 12:31
Цитата Сообщение от SanYong99 Посмотреть сообщение
не помогает.
Определение конструктора из хэдера удалено?
0
0 / 0 / 0
Регистрация: 26.04.2022
Сообщений: 9
26.04.2022, 12:32  [ТС]
да, удалено
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
26.04.2022, 12:55
SanYong99, https://www.youtube.com/watch?v=G_jcBrrYPAs
0
0 / 0 / 0
Регистрация: 26.04.2022
Сообщений: 9
26.04.2022, 19:41  [ТС]
чтож, ответ был проще чем я думал. Оказалось, что внутри одного из хеддеров был определён метод класса.. Всему виной невнимательность)
Спасибо всем за помощь в любом случае!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.04.2022, 19:41
Помогаю со студенческими работами здесь

Редактирование сообщения в защита worpdress от повторного сабмита?
Всем привет, В WordPress 4.3.1-проекте есть форма с данными и кнопка для сабмита : <script type="text/javascript"...

Как защитится от повторного запуска Service (защита от дурака)?
На вся кий случай хочу проставить защиту. Работает одновременно 4 сервиса и ситуаций когда к ним есть обращения, а когда нет куча. При...

Применение концепции повторного использования классов при разработке приложений
Задание 1: Разработать программу, которая использует принцип полиморфизма на базе абстрактного класса. Shape имеет метод GetArea (),...

Применение концепции повторного использования классов при разработке приложений
"фото"

Порядок определения зависимых классов
Здравствуйте. Интересно узнать, если класс A наследник B, можно ли B объявить после A? Forward declaration не подходит, т.к. не содержит...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru