Мне нужно создать ID2D1SolidColorBrush
и у меня есть указатель на ID2D1Brush
. Я использую мой ID2D1HwndRenderTarget
создать сплошной цвет кисти:Правильность ввода - ID2D1Brush to ID2D1SolidColorBrush (DirectX)
ID2D1Brush* brush = nullptr;
myRenderTarget->CreateSolidColorBrush(color,
reinterpret_cast<ID2D1SolidColorBrush**>(&brush));
Приведенный выше код работает, но мне интересно, если reinterpret_cast
является правильным выбором.
Не можете ли вы просто изменить 'brush' на тип' ID2D1SolidColorBrush * 'вместо этого? MSDN говорит, что «ID2D1SolidColorBrush» наследует от «ID2D1Brush», поэтому вы все равно сможете использовать «кисть», как если бы это был указатель на базовый класс. – Praetorian
Правильный способ - вернуть ID2D1SolidColorBrush ** обратно из вызова, а затем вызвать 'QueryInterface', чтобы получить другой интерфейс, а затем освободить интерфейс, который вы получили от вызова. – Mgetz
@Praetorian Нет, я не могу. Я бы предпочел хранить 'ID2D1Brush', чтобы я мог разбирать различные кисти. – Nick