Почему не видно класс из новой вкладки?

Тема в разделе "Arduino & Shields", создана пользователем timeonhome, 17 окт 2016.

  1. timeonhome

    timeonhome Нуб

    Добрый день, знатоки! Скажите, пожалуйста, почему в теле основной программы не видно класс, написанный в новой вкладке. Если функция написана в новой вкладке - проблем нет, ее можно вызывать в теле основной программы, но вот класс, написанный в новой вкладке, в теле основной программы объявить не могу, пишет "does not name a type", мол нет такого класса. В чем причина? Как побороть?
     
  2. rkit

    rkit Гуру

    Ну почитать чуток про C++, наверное.
     
  3. timeonhome

    timeonhome Нуб

    В С++ все понятно, Файл *.cpp плюс заголовочный файл *.h, все это подключается и прекрасно работает. Меня интересует ардуино и ее среда разработки. В которой какие-то "вкладки" можно открывать, там функции писать, файлы (*.ino) автоматом подключаются к проекту, а классы? писать нельзя во вкладках?
     
  4. rkit

    rkit Гуру

    Точно так что и в ардуино. .cpp и .h. Только среда совсем куцая.
     
    timeonhome нравится это.
  5. Tomasina

    Tomasina Сушитель лампочек Модератор

    причина в том, что при сборке скетча из вкладок компилятор руководствуется своими религиозными убеждениями (чаще всего собирает по алфавиту, но почему-то не всегда), т.е. в собранном скетче вызов класса может оказаться даже раньше его объявления.

    Кстати, с функциями тоже такой казус иногда случается: попробуй вызвать функцию с именем masterRead() из одноименной вкладки, из loop(), с большой вероятностью получишь тот же самый "does not name a type", ибо буква M идет после L.
    Помогает только принудительное объявление прототипов функций в начале скетча.
     
    petypen и timeonhome нравится это.