Глупый (наверняка) вопрос по указателям в Arduino
- Войдите на сайт для отправки комментариев
Втр, 29/07/2014 - 00:48
Понадобилось передать экземпляр шаблонного класса в функцию. Ничего не предвещао беды:
const int FUEL_MAP_SIZE = 100; const int FUEL_MAP_CONFURIGURED_ADDRESS = 1; const int FUEL_MAP_ADDRESS = 2; typedef FloatKeyContainer<FUEL_MAP_SIZE, 255, byte, byte> FuelMap; void initializeFuelMap(FuelMap* bFuelMap) { } void loop() { FuelMap fuelMap; if(fuelCountInitialized()) { fuelMap.load(FUEL_MAP_ADDRESS); } else { initializeFuelMap(&fuelMap); } }
И тут :
apparate_ino:10: error: variable or field 'initializeFuelMap' declared void
apparate_ino:10: error: 'FuelMap' was not declared in this scope
apparate_ino:10: error: 'bFuelMap' was not declared in this scope
Но :
void initializeFuelMap(byte* bFuelMap) { } void loop() { FuelMap fuelMap; if(fuelCountInitialized()) { fuelMap.load(FUEL_MAP_ADDRESS); } else { initializeFuelMap((byte*)&fuelMap); } }
Собирается без проблем. Я таки слепой, иил это какая-то особенность Processing?
Это не процессинг, это вайринг.
Надо попробовать первой строкой в скетча добавить, например,
#include <Arduino.h>
Код не полный, нет функции fuelCountInitialized, легко может быть из-за этого.
Таки она есть. Что характерно - после приведения от byte* к FuelMap* все работает
А напрямую - облом-с
apparate_ino:11: error: variable or field 'initializeFuelMap' declared void
apparate_ino:11: error: 'FuelMap' was not declared in this scope
apparate_ino:11: error: 'fuelMap' was not declared in this scope
p.s.
ЗЫ Нашёл, что ошибка в typedef-е - если подставить напрямую шаблон, то всё пучком. Надо поглядеть на http://stackoverflow.com/questions/6907194/how-to-typedef-a-template-class