классы

Тема в разделе "LANGS.C", создана пользователем ckunep, 9 июл 2009.

  1. ckunep

    ckunep New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    19
    у меня возникла трудность при создании класса, вот что есть
    Код (Text):
    1. class GDTpoint
    2. {
    3.   public:
    4.     GDTpoint& AddVector(const GDTvector &u);
    5.     ...
    6. };
    7.  
    8. class GDTvector
    9. {
    10.     ...
    11. };
    когда я пытаюсь построить проект, компилятор сообщает что необходима скобка в строчке где объявляется функция addvector. Но если вместо типа GDTvector в скобках указать другой тип(например: GDTpoint& AddVector(int u)) или убрать название переменной(GDTpoint& AddVector(const &GDTvector)), то все компилируется, в чем проблема?
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    В том, что во время прохода перовго класса компилятор ничего не знает о втором.
     
  3. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    Поставь перед class GDTpoint - class GDTvector;
    помоему это называется предварительное объявление.
     
  4. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    Forward declaration.
     
  5. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    И работает это только когда компилеру не надо выделять память под этот объект. Т.е. используются pointers и references, для которых знать размер того класса не надо.
     
  6. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    s0larian
    Пример когда не работает можно? Чтото не уловлю мысли вашей...
     
  7. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    TSS
    class A;
    const int b=sizeof(A); // не работает