roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 05:36

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 09:33 
Не в сети

Зарегистрирован: 02 апр 2012, 12:24
Сообщения: 157
Откуда: г.Астрахань
прог. языки: 1С, С#
ФИО: Сергей Курносов
Хочу сделать класс в котором одно из свойств является другим классом.

#include "Arduino.h"
#include "Ultrasonic.h"

class Class1
{
public:
Class1();
void AsseptSonar(int pinTriger, int pinEcho);
long GetSonarDistans();
private:
int _pinSonarTriger;
int _pinSonarEcho;
Ultrasonic sonar;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
В этом месте ругается
:
Class1.cpp:5: error: no matching function for call to 'Ultrasonic::Ultrasonic()'
/Ultrasonic.h:21: note: candidates are: Ultrasonic::Ultrasonic(int, int)
/Ultrasonic.h:19: note: Ultrasonic::Ultrasonic(const Ultrasonic&)

Как правильно определять типы свойств классов которые являются другими классами?

};
#endif


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 09:36 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2009, 13:13
Сообщения: 763
Откуда: Красноярск
прог. языки: С++, Delphi, PHP, SQL, 1C
ФИО: Александр
а нафига темы плодить то?

_________________
Первая заповедь радиотехника - почисти контакты!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 09:50 
Не в сети

Зарегистрирован: 02 апр 2012, 12:24
Сообщения: 157
Откуда: г.Астрахань
прог. языки: 1С, С#
ФИО: Сергей Курносов
Когда отправлял сообщение на форум то оно не отправлялось никак нажал несколько раз на отправить вот оно наверное и наплодилось


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 10:16 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
http://arduinoetcetera.blogspot.com/2011/01/classes-within-classes-initialiser.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 10:20 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Очевидно хочет дефолтный конструктор(который без параметров) в классе Ultrasonic.
Если таковой добавить невозможно, то можно попробовать добавить во все конструкторы Class1 явные вызовы конструкторов Ultrasonic.

ЗЫ. C++ на 8мибитниках - извращение. ИМХО.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 10:33 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
http://stackoverflow.com/questions/9027456/no-matching-function-error-when-using-attachinterrupt


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 11:12 
Не в сети

Зарегистрирован: 02 апр 2012, 12:24
Сообщения: 157
Откуда: г.Астрахань
прог. языки: 1С, С#
ФИО: Сергей Курносов
elmot писал(а):
Очевидно хочет дефолтный конструктор(который без параметров) в классе Ultrasonic.
Если таковой добавить невозможно, то можно попробовать добавить во все конструкторы Class1 явные вызовы конструкторов Ultrasonic.

ЗЫ. C++ на 8мибитниках - извращение. ИМХО.


странно при определении переменной зачем нужен конструктор.

Конструктор нужен при ее создании.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 13:14 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
:crazy: жесть. хорошо, допустим вы где-то отрыли тупейше-припримитивнейший компилятор, он вам откомпилил этот недокод и при исполнении доходит до создания объёкта, опа, а конструктора та нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 15:17 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
sergKyrnosov писал(а):
странно при определении переменной зачем нужен конструктор.

Конструктор нужен при ее создании.

Это не переменная ссылка, это сам объект. У внешнего класса есть конструктор(дефолтный или явный), он в явном или неявном виде вызывает конструкторы суперклассов и вложенных полей. Одного из конструкторов нету. Вот и ой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 15:50 
Не в сети

Зарегистрирован: 02 апр 2012, 12:24
Сообщения: 157
Откуда: г.Астрахань
прог. языки: 1С, С#
ФИО: Сергей Курносов
Angel71 писал(а):
:crazy: жесть. хорошо, допустим вы где-то отрыли тупейше-припримитивнейший компилятор, он вам откомпилил этот недокод и при исполнении доходит до создания объёкта, опа, а конструктора та нет.


При определении переменной выделяется всего лишь память.
При ее создании уже происходит инициализация.

Даже в томже C#

когда вы определяете переменную, то вроде никаких конструкторов не вызывается.
А потом когда New тогда и конструкторы работают

Может я где то не прав.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 16:15 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Конечно не прав. Компилятор валится с этими матюгами ДО создания переменной, ДО выделения памяти, и даже ДО запуска программы, а еще на фазе построения кода класса, в compile time. Ему не хватает метода, он и ругается.

Читайте Страуструпа, короче.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 16:59 
Не в сети

Зарегистрирован: 02 апр 2012, 12:24
Сообщения: 157
Откуда: г.Астрахань
прог. языки: 1С, С#
ФИО: Сергей Курносов
Вот код на C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication14
{
class Program
{
static void Main(string[] args)
{
Class1 per1;
per1 = new Class1();
}
}


class Class1
{
Class2 _var1;
public Class1()
{
_var1 = new Class2();
}

}

class Class2
{

}

}

Все работает, вроде


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 18:52 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
зачем равнять то, где памяти для выполнения и скорости в достатке , с тем где не памяти нормально , ни скорости ... возьмите тогда ARM и там будет все вплоть до дот нета....

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 19:07 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
sergKyrnosov писал(а):
Даже в томже C#
когда вы определяете переменную, то вроде никаких конструкторов не вызывается.
А потом когда New тогда и конструкторы работают
Может я где то не прав.

это же азы :) не важно, прописали ли вы явно в классе конструктор или нет, паблик он, статик или ещё какой, но он ВСЕГДА ЕСТЬ. в шарпе любой класс по иерахрхии всегда восходит к обджекту, у которого опять таки есть конструктор. не верите, так почитайте самоучители, мсдн, пройдитесь дебаггером или натравите дизассемблер (как увидите ".ctor", так знайте, что это и есть конструктор). проехали с шарпом, это совсем другой язык.
:) в данном случае вам компилятор сразу и выдал, что он не может найти нужный конструктор. как вы себе представляете инициализацию класса, если компилятор в недоумении репу чешит, какой же конструктор использовать?
Вложение:
demotivators.jpg
demotivators.jpg [ 43.3 КиБ | Просмотров: 2978 ]

как на фото - этот не подходит и этот и тот,... да ну ёпрст... вот вам компилятор всё правильно и выдал "что вы мне подсунули? пЭрЭдЭлать!"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование клссов для ардуино
СообщениеДобавлено: 05 сен 2013, 22:29 
Не в сети

Зарегистрирован: 02 апр 2012, 12:24
Сообщения: 157
Откуда: г.Астрахань
прог. языки: 1С, С#
ФИО: Сергей Курносов
если можно для общего развития объясните: инициализация класса когда происходит,
когда определяет перемен ную
Class2 _var1

или тут
_var1 = new Class2();

заранее спасибо


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO