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

error C2065: CIRCLE: необъявленный идентификатор - C++

Восстановить пароль Регистрация
 
pi_X_el
Заблокирован
28.03.2013, 20:20     error C2065: CIRCLE: необъявленный идентификатор #1
Почему не видно CIRCLE?

error C2065: CIRCLE: необъявленный идентификатор

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct Shape
{
    enum { CIRCLE, SQUARE, RECTANGLE } eval;
    double x, radius;
};
 
double Area(Shape *s)
{
    switch (s->eval)
    {
        case    CIRCLE:     return (3.14 * s->radius * s->radius);
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Banddk
37 / 37 / 1
Регистрация: 08.12.2012
Сообщений: 157
Записей в блоге: 1
28.03.2013, 20:33     error C2065: CIRCLE: необъявленный идентификатор #2
Это потому-что enum в структуре может быть

Добавлено через 2 минуты
Shape::CIRCLE может так сделать)
VaJI
 Аватар для VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
28.03.2013, 20:40     error C2065: CIRCLE: необъявленный идентификатор #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct Shape
{
    enum eval;
    double x, radius;
    Shape()
    {
         eval = { CIRCLE, SQUARE, RECTANGLE };
    }
};
 
double Area(Shape *s)
{
    switch (s->eval)
    {
        case    CIRCLE:     return (3.14 * s->radius * s->radius);
    }
}
Добавлено через 48 секунд
ошибка компилятора подскажет)

Добавлено через 5 минут
Короче, как то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
enum eval { CIRCLE, SQUARE, RECTANGLE };
 
struct Shape
{
    eval e;
    double x, radius;
};
 
double Area(Shape *s)
{
    switch (s->e)
    {
        case    CIRCLE:     return (3.14 * s->radius * s->radius);
    }
}
pi_X_el
Заблокирован
28.03.2013, 20:47  [ТС]     error C2065: CIRCLE: необъявленный идентификатор #4
Спасибо. Программа заработала) Только теперь Visual Studio предупреждение такое показывает
warning C4715: Area: значение возвращается не при всех путях выполнения
И у меня вот такой вопрос. Что будет если функция ничего не возвратит? Это опасно?
VaJI
 Аватар для VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
28.03.2013, 20:49     error C2065: CIRCLE: необъявленный идентификатор #5
просто после switch(){} запишите return 0;
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
28.03.2013, 20:50     error C2065: CIRCLE: необъявленный идентификатор #6
pi_X_el, опасно лишь в том случае, если ты посылаешь ей такие значения, при которых она ничего не возвращает, но при этом на выходе ты ждешь корректное значение. Поэтому лучше так не делать. На крайняк возвращай из функции что-то типа return -2417481, что будет (лично для тебя) означать, что произошла ошибка в функции.
VaJI
 Аватар для VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
28.03.2013, 20:51     error C2065: CIRCLE: необъявленный идентификатор #7
т.к. у вас функция в любом случае обязана что-то вернуть, то это что-то будет мусором если ваш свич пройдется по всем проверкам)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2013, 21:13     error C2065: CIRCLE: необъявленный идентификатор
Еще ссылки по теме:

C++ Error C2065: xlineMAX: необъявленный идентификатор
C++ Error C2065: NULL: необъявленный идентификатор
C++ Error C2065: col_gray: необъявленный идентификатор

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
28.03.2013, 21:13     error C2065: CIRCLE: необъявленный идентификатор #8
На самом деле, подобная ошибка- повод лишний раз перевроверить логику программы.

Действительно, пишется функция, возвращающаая double, но... не всегда. Вопрос: на фига нам нужна функция, которая тут возврщает, а тут не возращает? Может, правильнее сделать так: пусть функция возвращает double БЕЗУСЛОВНО?

C++
1
2
3
4
double Area(Shape *s)
{
       return (3.14 * s->radius * s->radius);
}
Да, но мы же прекрасно знаем, что s не всегда будет корректный (нужный нам). А тогда и надо вызывать s когда он коррректный. То есть как-то так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
int main () {
 
//.......
   
 double x;
 switch (s->e)
    {
        case    CIRCLE:   x= Area (s);
    }
 
 return 0;
}
Добавлено через 15 секунд
На самом деле, подобная ошибка- повод лишний раз перевроверить логику программы.

Действительно, пишется функция, возвращающаая double, но... не всегда. Вопрос: на фига нам нужна функция, которая тут возврщает, а тут не возращает? Может, правильнее сделать так: пусть функция возвращает double БЕЗУСЛОВНО?

C++
1
2
3
4
double Area(Shape *s)
{
       return (3.14 * s->radius * s->radius);
}
Да, но мы же прекрасно знаем, что s не всегда будет корректный (нужный нам). А тогда и надо вызывать s когда он коррректный. То есть как-то так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
int main () {
 
//.......
   
 double x;
 switch (s->e)
    {
        case    CIRCLE:   x= Area (s);
    }
 
 return 0;
}
Yandex
Объявления
28.03.2013, 21:13     error C2065: CIRCLE: необъявленный идентификатор
Ответ Создать тему
Опции темы

Текущее время: 09:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru