Как каждый возвращает локальный CComSafeArray выходному параметру LPSAFEARRAY?

Мое дневное задание находится в школе, и за последние несколько лет я видел или преподавал (или попытался преподавать), различные дети, в различных числах, программируя уроки.

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

LEGO Mindstorms определенно там наверху списка. Большинство школ теперь суперклей кирпичи вместе для создания предварительно сделанный моделями, которым нельзя было отметить биты прочь их но это не должно быть проблемой дома. На "Таймс" Образовательный сайт Дополнения (форум веб-сайта для еженедельной обучающей газеты Великобритании), "какой язык программирования является лучшим для детей?" тема довольно регулярно подходит. Много рекомендаций там для Царапины как альтернатива Mindstorms - укусило больше свободы, чем Mindstorms, снова вероятно, лучше для более яркого студента, которому можно было также дать паяльник.

я нашел, что у более медленных учеников могут все еще быть проблемы с Mindstorms, даже при том, что среда программирования является "графической" - на экране существует все еще большое продолжение, и существует немного для запоминания (это было более старой версией, ум - еще не попробовали притягательный новый). По моему опыту, лучшим всесторонним введением в программирование является, вероятно, все еще ЛОГОТИП - на самом деле значительно более мощный язык, чем большинство людей дает ему кредит на. Исходная Mindstorms книга Seymour Papert (ничто, чтобы сделать с LEGO - они отметили заголовок книги для их продукта), одного из инициаторов ЛОГОТИПА, является канонической ссылкой для обучения программирования детям как "навык мышления" и для понятия Constructionism в изучении.

у Нас были классы 7 или 8 лет ЛОГОТИПОВ программирования. Обратите внимание, что мы не стремимся делать их "разработчиками программного обеспечения", это - карьера, которую они могут выбрать в какой-то момент пост16. В молодом возрасте мы пытаемся заставить их думать о "программировании" как просто другой инструмент - как изложить проблему, которая будет решена компьютером, таким же образом они могли бы использовать интеллект-карту, чтобы помочь им организовать и помнить материал за экзамен. Никакого бедного ребенка нельзя усадить и тренировать в minutia и использовании конкретного языка, их нужно оставить исследовать и понять материал, как им нравится.

11
задан Motti 23 November 2009 в 14:43
поделиться

2 ответа

Проблема в том, что вы напрямую устанавливаете внутренний указатель принимающего CComSafeArray . Используйте метод Attach () , чтобы прикрепить существующий SAFEARRAY к CComSafeArray :

LPSAFEARRAY ar;
foo(&ar);
CComSafeArray<VARIANT> sa;
sa.Attach(ar);
10
ответ дан 3 December 2019 в 07:38
поделиться

Я бы предположил, что не было намерения разрешить такой вариант использования. Возможно, это был не тот же разработчик, который написал CComVariant & CComPtr :)

Я полагаю, что автор CComSafeArray считал семантику значений основной целью; Attach/Detach могли быть просто "бонусной" функцией.

1
ответ дан 3 December 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: