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

Заголовочный файл и тип enum

08.02.2010, 16:36. Показов 3682. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание состоит в том, что надо программу разбить на три части:
заголовочный файл Factor.h, у меня он такой получился:
C++
1
2
3
4
5
6
7
8
9
#include "stdafx.h"
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
enum ERR_CODE { SUCSESS, FAILURE };
 
ERR_CODE Factor(int,int&,int&);
Файл с функцией Factor.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include "factor.h"
 
ERR_CODE Factor(int x, int&pSquared, int&pCube)
{
    if(x>20)
        return FAILURE;
    else
    {
        pSquared=x*x;
        pCube=x*x*x;
        return SUCSESS;
    }
}
И файл с основной программой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include "Factor.cpp"
#include "factor.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    int x,squared,cube;
    ERR_CODE result;
    cout<<"Vvedite chislo(0-20):";
    cin>>x;
    result = Factor(x,squared,cube);
    if(result==SUCSESS)
    {
        cout<<"squared:"<<squared<<endl;
        cout<<"Cube"<<cube<<endl;
    }
    else
        cout<<"Error!";
 
    return 0;
}
программа должна считать квадрат и куб числа, а функция возвращать код ошибки и с помощью ссылок так же возвращать вычисленные значения куба и квадрата.
Вопросы:
1.Почему постоянно в каждой части опять надо вводить
C++
1
#include "stdafx.h"
? Ведь по-моему хватает написать это в заголовочном файле Factor.h.
2.И почему постоянно выдает об ошибке: error C2011: ERR_CODE: переопределение типа "enum" ?
что я сделал не правильно?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2010, 16:36
Ответы с готовыми решениями:

Заголовочный файл подключен, но не виден тип
Работаю в QT. Выдает ошибку does not name a type, как будто нет такого типа. У меня 2 класса и в каждом указатель на другой. Подключаю...

Enum и типы данных. Как задать тип значений явно, и какой тип будет при переполнении?
Пытаюсь сделать функцию с передачей нескольких параметров,используя битовые операции. В качестве параметров думаю использовать не...

Добавить свой тип (Enum) в тип переменной My.Settings
Доброй ночи! В принципе название темы говорит само за себя. Нужен параметр приложения с моим типом данных. В данном случае это enum. Но...

5
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
08.02.2010, 16:39
#include "stdafx.h" нужно для предкомпилированных заголовков. На больших проектах значительно уменьшает время сборки.
Можно в опциях отключить это.
0
0 / 0 / 0
Регистрация: 25.06.2009
Сообщений: 28
08.02.2010, 16:59  [ТС]
Понятно... спасибо!
Но почему ругается на переопределение типа, ведь не вставишь в другое место?
Конкретно эта ошибка находится в 7-й строке кода Factor.h
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
08.02.2010, 17:03
Цитата Сообщение от Grey_Crow Посмотреть сообщение
Вопросы:
1.Почему постоянно в каждой части опять надо вводить
C++
1
#include "stdafx.h"
? Ведь по-моему хватает написать это в заголовочном файле Factor.h.
2.И почему постоянно выдает об ошибке: error C2011: ERR_CODE: переопределение типа "enum" ?
что я сделал не правильно?
1. тогда нужно будет в каджом срр включать Factor.h. даже там, где он не нужен.
2. потому что включаешь несколько раз этот свой Factor.h, а он содержит это определение. перепиши Factor.h так, чтобы все что в нем есть включалось лишь один раз при компиляции, независимо от числа срр файлов, где Factor.h включен.

в зависимости от версии студии твоей:

или

C++
1
#pragma once
или

C++
1
2
3
4
#ifndef MY_SUPER_FACTOR_BLABLABLA_GUID
#define MY_SUPER_FACTOR_BLABLABLA_GUID
.....
#endif //MY_SUPER_FACTOR_BLABLABLA_GUID
2
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
08.02.2010, 17:09
Кто Вас учил делать так?
C++
1
#include "Factor.cpp"
Файлы .cpp не включаются в другие. Просто включите все свои .cpp в один проект.

А Ваша ошибка возникает из-за того, что заголовок включается несколько раз. Нужно или обрамлять "скобками":
C++
1
2
3
4
5
6
#ifndef FactorH
#define FactorH
...
// Тут все остальное содержимое
...
#endif
Или же VC допускает директиву
C++
1
#pragma once
Upd. Слишком долго писал.. Опередили..
2
0 / 0 / 0
Регистрация: 25.06.2009
Сообщений: 28
08.02.2010, 18:46  [ТС]
сделал, как вы сказали, но компилятор начал выдавать ошибки:
Ошибка 1 error LNK2005: "enum ERR_CODE __cdecl Factor(int,int &,int &)" (?Factor@@YA?AW4ERR_CODE@@HAAH0@Z) уже определен в 11.obj Factor.obj


Ошибка 2 fatal error LNK1169: обнаружен многократно определенный символ - один или более C:\BegCSharp\c++\24\11\11\Debug\11.exe

Переписал даже, чтобы Factor.cpp не использовался, все равно такая же ошибка..(
не могу понять почему, ведь Factor.h используется только один раз....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.02.2010, 18:46
Помогаю со студенческими работами здесь

Тип Enum
Вот табличка как тут правильно использовать, доклад будет опубликован enum тоесть нужно да либо нет, да я буду считать за 0 и нет за 1. Как...

Тип enum и нумерация
Всем здрасьте ! У меня есть тип enum, который описывает что-то: enum NUM { X1, X2, X3, ...} Каждый Х, имеет свой смысл и число,...

Тип данных ENUM
вообщем, имею в таблице поле с типом данных ENUM (переключаемое которое). Значения - 'y','n' по умолчанию написал - n. Все бы ничего...

Тип данных enum
Здравствуйте. Как работать с этим типом поля? Можно ли вытаскивать данные о возможных вариантах. Что записывается в ячейку порядковый номер...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru