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

компилятор ругается на структуру - C++

Восстановить пароль Регистрация
 
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
06.08.2010, 14:05     компилятор ругается на структуру #1
попалась вот такая вот структура для графа, но компилятору она не нравится....

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template <class V, class E>
struct graph 
{
    struct v_info;
    struct e_info;
 
    struct v_info
    {
        V i;
        list <e_info> *e;
    };
    struct e_info
    {
        E i;
        list <v_info> *v};
    };
    list <v_info> *v;
};
ошибки выдаёт типа таких :
Error 1 error C2143: syntax error : missing ';' before '<' c:\Documents and Settings\1\Мои документы\Visual Studio 2008\Projects\graph\graph\graph.cpp 10
Error 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\Documents and Settings\1\Мои документы\Visual Studio 2008\Projects\graph\graph\graph.cpp 10
Error 3 error C2238: unexpected token(s) preceding ';' c:\Documents and Settings\1\Мои документы\Visual Studio 2008\Projects\graph\graph\graph.cpp 10
Error 4 error C2143: syntax error : missing ';' before '<' c:\Documents and Settings\1\Мои документы\Visual Studio 2008\Projects\graph\graph\graph.cpp 15
может какую библиотеку надо подключить?? (у меня подключены iostream и stdio.h)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2010, 14:05     компилятор ругается на структуру
Посмотрите здесь:

Ругается компилятор C++
C++ почему компилятор не ругается?
C++ компилятор с++ 2012 ругается
ругается компилятор: C++
Ругается компилятор C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
06.08.2010, 14:10     компилятор ругается на структуру #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template <class V, class E>
struct graph 
{
    struct v_info;
        struct e_info;
 
        struct v_info
        {
                V i;
                std::list <e_info> *e;
        };
        struct e_info
        {
                E i;
                std::list <v_info> *v;
        };
        std::list <v_info> *v;
};
Так работает?
Aaxenon
Light Knight
 Аватар для Aaxenon
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
06.08.2010, 14:10     компилятор ругается на структуру #3
тут синтаксические ошибки, попробуйте почитать их и исправить как надо
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
06.08.2010, 14:15  [ТС]     компилятор ругается на структуру #4
спасибо)

ошибки синтаксические, но если их почитать, то там бредятина.... перед <v_info> явно не нужна ";" а он требует....

Добавлено через 3 минуты
хотя добавление std:: тоже ничего не изменило...
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
06.08.2010, 14:25     компилятор ругается на структуру #5
У меня нет ошибок из кода в первом сообщении.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
template <class V, class E>
struct graph 
{
        struct v_info
        {
            friend struct e_info;
                V i;
                std::list <e_info> e;
        };
        struct e_info
        {
                E i;
                std::list <v_info> *v;
        };
        std::list <v_info> *v;
};
Воспользуйтесь friend.
Где у вас ошибка в какой строчке?
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
06.08.2010, 14:51     компилятор ругается на структуру #6
Конкретизировать шаблон типом, который только объявлен, но не определён, нельзя. Так что писать list<e_info> недопустимо. Само наличие такой перекрёстной зависимости между двумя типами - серьёзный повод задуматься о допущенных ошибках проектирования.
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
06.08.2010, 14:54  [ТС]     компилятор ругается на структуру #7
при такой структуре ошибок меньше но всё равно есть...
он требует чтобы перед <v_info> и <e_info> стояла ";"
и в строчках где написано <v_info> и <e_info> вот такая ошибка:
Error 5 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Добавлено через 1 минуту
Цитата Сообщение от Nick Alte Посмотреть сообщение
Конкретизировать шаблон типом, который только объявлен, но не определён, нельзя. Так что писать list<e_info> недопустимо. Само наличие такой перекрёстной зависимости между двумя типами - серьёзный повод задуматься о допущенных ошибках проектирования.
а что тогда сделать?? записать всё это как отдельные 2 структуры??
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
06.08.2010, 15:04     компилятор ругается на структуру #8
Цитата Сообщение от Flamе Посмотреть сообщение
попалась вот такая вот структура для графа, но компилятору она не нравится....

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template <class V, class E>
struct graph 
{
    struct v_info;
    struct e_info;
 
    struct v_info
    {
        V i;
        list <e_info> *e;
    };
    struct e_info
    {
        E i;
        list <v_info> *v};
    };
    list <v_info> *v;
};
ошибки выдаёт типа таких :


может какую библиотеку надо подключить?? (у меня подключены iostream и stdio.h)
В строке 15 нужно убрать фигурную скобку перед точкой с запятой. После этого все работает.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
06.08.2010, 15:16     компилятор ругается на структуру #9
Действительно. Похоже, компилятору удаётся сообразить что к чему и нормально инстанциировать list. Ну тем лучше.
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
06.08.2010, 15:29  [ТС]     компилятор ругается на структуру #10
вот блин, такая глупая опечатка.... но всё равно не пашет.... не понимает он строчки типа этой: "list <v_info> *v"
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
06.08.2010, 15:33     компилятор ругается на структуру #11
Цитата Сообщение от Flamе Посмотреть сообщение
вот блин, такая глупая опечатка.... но всё равно не пашет.... не понимает он строчки типа этой: "list <v_info> *v"
А #include <list> не забыли?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2010, 17:13     компилятор ругается на структуру
Еще ссылки по теме:

C++ Компилятор не ругается
Компилятор ругается на fopen C++
Компилятор ругается C++

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

Или воспользуйтесь поиском по форуму:
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
06.08.2010, 17:13  [ТС]     компилятор ругается на структуру #12
Цитата Сообщение от Mr.X Посмотреть сообщение
А #include <list> не забыли?
о да, как раз её и не было))) теперь всё работает)) надо запомнить эту библиотеку)))) спасибо!!!))
Yandex
Объявления
06.08.2010, 17:13     компилятор ругается на структуру
Ответ Создать тему
Опции темы

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