Короче есть такой класс Пытаюсь добавить его в этот класс Вопрос, как эго правильно объявить(если это было сделано не правильно) и как его потом правильно инициализировать На все известные мне способы компилятор ругается например так cckjYCpJ.ltrans0.ltrans.o*: In function global constructors keyed to 65535_0_BlindController.cpp.o.2468 (.text.startup+0xc8): undefined reference to Queue::Queue() collect2.exe*: error: ld returned 1 exit status

Комментарии: 39

  1. Maxim

    Объявлять конструктор не пробовал?

    • Kirill

      Для Queue?

      • Maxim

        Точнее, реализовывать Все темплейт-классы крайне хуево работают, когда .h/.cpp отдельно

        • Kirill

          Реализовано в cpp

          • Maxim

            И потому как только класс становится шаблонным, всю логику пишут прямо в .hpp файле Вот не будет так работать

            • Kirill

              Почему и как правильно?

              • Maxim

                Как компилятор, увидев в твоем main.cpp вызов шаблонного конструктора найдет его реализацию? И как компилятор, увидев в queue.cpp реализацию для некого найдет, что в main.cpp она использовалась для конкретного типа? Правильно - писать весь код в хедере, других вариантов я не знаю

                • Kirill

                  ясно а зачем тогда h и cpp как отдельные файлы

                  • Maxim

                    Ну можно, наверное, в cpp инстанциировать очередь для конкретных типов, и не выносить в хедеры

                    • Kirill

                      (я вообще не за такое разбиение сам c#-овец и там вообще все вместе и все понятно

                      • Maxim

                        Вообще изначально идея - чтобы уменьшать сложность компиляции

                        • Kirill

                          А зачем мне инициализация для конкретных типов если у меня вся логика шаблонная(иначе зачем мне шаблонный класс)

                          • Maxim

                            Вот потому писать весь код в хедере Это единственный способ компилятору инстанциировать его сразу для всех типов, которые он найдет

                            • Kirill

                              ясно пошёл переписывать)

                              • Maxim

                                Ты же понимаешь, что шаблоны - это не генерики и код тупо дублируется?

                                • Kirill

                                  Тоесть лучше вообще без cpp обойтись, правильно?

                                  • Maxim

                                    Тут - да

                                    • Kirill

                                      ну теперь знаю что это разные вещи, знать бы что такое генерики

                                      • Maxim

                                        Генерики - это когда один экземпляр кода написан так, что может работать со всеми типами Java и наверное шарп так работают

                                        • Kirill

                                          ))) ясн Кстати ещё 1 вопрос, можно ли так написать

                                          • Maxim

                                            Но вообще я бы не увлекался бы таким стилем программирование под ардуиной (сначала динамически аллоцируемая строка, потом динамически аллоцируемая очередь) и выделил бы статический буфер Вообще каждый раз когда видишь динамическую аллокацию, надо очень долго думать, а действительно ли она нужна и без неё никак

                                          • Kirill

                                            ну тут это лучший вариант из тех что пришло в голову Вопрос про return NULL

                                            • Maxim

                                              Ну судя по всему - требуется принимать какие-то строковые данные. Почему бы просто не выделить один строковый буфер? Нет, нельзя, не факт, что NULL - это валидное значение для T

                                              • Oleksii

                                                Братва а какой у Mechanic флюс BGA самый ништяковый?

                                                • Oleksii

                                                  ни разу не юзал в руках не держал но хвалят. Первое поддельное кингбо приехало

                                                  • Maxim

                                                    Так что про статические буферы подумай, на 2 килобайтах памяти без MMU маллок - очень большое зло Потому что потом память фрагментируется и песда, может внезапно отказать

                                                  • Artem

                                                    Я про uv-10 видел хорошие отзывы. Сам бга не паяю, но этот флюс понравился очень

                                                    • Maxim

                                                      А иначе получится лютая хрень, которая незаметно десять раз скопирует данные, двадцать раз переаллоцирует, сожрет пару мегабайт памяти и вусмерть фрагментирует хип Вот очередь выше с передачей структур со строками по значению - это первый кандидат на такое поведение Динамический String - второй. Это не JRE с десятью мегабайтами памяти и способностью произвольно двигать указатели

                                        • Andy

                                          И Дельфи :)

                                          • Maxim

                                            Ой, трупы сами насилуйте, в них я не разбирался. Последний раз, когда я видел дельфи, генериками там и не пахло :D

                                      • Anonim

                                        В с# код дженериков тоже дублируется Ты ж назвался шарпистом? Они оттуда изначально и приползли...

                                        • Kirill

                                          Не знание некоторых понятий не мешает мне пользоваться самими возможностями.

                                          • Anonim

                                            Как же с коллегами по команде общаться, без терминологии??

                                            • Kirill

                                              Ну как то получается) Я же не говорю что вообще без терминов

                                          • Maxim

                                            Учитывая, насколько эффективный код написан выше - мешает

Не нашли ответ?

Вам также может быть интересно

Здравствуйте, коллеги. Прошу, поделитесь опытом, кто как микрофоны на мобилках меняет? Температура там, припой, флюс, отмывка.... Читать далее