Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
Grey_Crow
0 / 0 / 0
Регистрация: 25.06.2009
Сообщений: 28
#1

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

08.02.2010, 16:36. Просмотров 2074. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2010, 16:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заголовочный файл и тип enum (C++):

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

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

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

Перечислимый тип enum ,что это? - C++
Не пойму зачем он нужен,если все равно он возвращает целые числа? Как обращаться именно к имени(string) элемента типа enum?К примеру...

Как результат функции конвертировать в тип Enum? - C++
Кто может подсказать как мне результат функции конвертировать в тип Enum, тоесть чтобы результат функции сравнивало со значениями в этом...

Как сделать тип enum в структуре беззнаковым - C++
Почему элемент Type структуры BracketBlock signed и как его сделать unsigned, не увеличивая количество бит Type? enum BracketType { ...

5
oxotnik
1590 / 1067 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
08.02.2010, 16:39 #2
#include "stdafx.h" нужно для предкомпилированных заголовков. На больших проектах значительно уменьшает время сборки.
Можно в опциях отключить это.
0
Grey_Crow
0 / 0 / 0
Регистрация: 25.06.2009
Сообщений: 28
08.02.2010, 16:59  [ТС] #3
Понятно... спасибо!
Но почему ругается на переопределение типа, ведь не вставишь в другое место?
Конкретно эта ошибка находится в 7-й строке кода Factor.h
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
08.02.2010, 17:03 #4
Цитата Сообщение от 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
1392 / 1023 / 228
Регистрация: 31.05.2009
Сообщений: 4,275
08.02.2010, 17:09 #5
Кто Вас учил делать так?
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
Grey_Crow
0 / 0 / 0
Регистрация: 25.06.2009
Сообщений: 28
08.02.2010, 18:46  [ТС] #6
сделал, как вы сказали, но компилятор начал выдавать ошибки:
Ошибка 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
08.02.2010, 18:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2010, 18:46
Привет! Вот еще темы с ответами:

Заголовочный файл - C++
Для чево етот файл используется??? Как ево использовать в своей программе помогите хочу разобраться)

Заголовочный файл - C++
Здравствуйте. Помогите, пожалуйста, разобраться с заголовочными файлами и функциями-&quot;друзьями&quot;. Например: main.cpp #include &quot;A.h&quot; ...

Заголовочный файл - C++
Доброго времени суток! Ситуация такая: хочу, исходя из функции, создать заголовочный файл. Но, увы, не умею создавать их. Хотелось бы...

Заголовочный файл .h - C++
Здравствуйте уважаемые гуру-программисты! Столкнулся с такой проблемой. Пишу в С++ на линуксе в IDE geany и такая проблема, когда создаю...


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

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

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