'аргумент': неоднозначные преобразования из 'Нечто *константа' к 'IUnknown *'

Я записал инструмент, который (путем сцепления в Открывают DBDiff) сравнивает схемы базы данных и предложит сценарии миграции Вам. При внесении изменения, которое удаляет или изменяет данные, это бросит ошибку, но обеспечит предложение для сценария (например, когда столбец в пропавших без вести в новой схеме, это проверит, был ли столбец переименован и создает xx - генерировал script.sql.suggestion, содержащий переименовать оператор).

http://code.google.com/p/migrationscriptgenerator/ SQL Server только я боюсь :( Это - также симпатичная альфа, но это - ОЧЕНЬ низкое трение (особенно при объединении его с Tarantino или http://code.google.com/p/simplescriptrunner/ )

способ, которым я использую его, должен иметь проект сценариев SQL в .sln. У Вас также есть db_next база данных локально, которую Вы вносите своими изменениями в (использование Studio управления или Экспорт Схемы NHibernate или LinqToSql CreateDatabase или что-то). Затем Вы выполняете migrationscriptgenerator с _dev и _next DBS, который создает. сценарии обновления SQL для миграции через.

8
задан Roger Lipscombe 9 December 2009 в 15:26
поделиться

1 ответ

Both IPlugin and IEventSubscriber are derived from IUnknown and so C++ can't decide on its own which one of IUnknowns to cast to implicitly. You need to explicitly tell C++ which one you want. There're two options: either call GetUnknown() (is available in every class having a COM map declared):

pOther->MethodTakingIUnknown(GetUnknown());

or explicitly cast this to one of the base interfaces:

pOther->MethodTakingIUnknown( static_cast<IPlugin*>( this ) );

In this very case it doesn't matter which base interface you cast to - just cast to any. It only matters when you implement IUnknown::QueryInterface() to consistently cast to the very same base every time.

9
ответ дан 5 December 2019 в 19:00
поделиться
Другие вопросы по тегам:

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