Решение для Bash, если Вы хотите сделать это командой (например, если необходимо часто делать это):
addnums () {
local total=0
while read val; do
(( total += val ))
done
echo $total
}
Тогда использование:
addnums < /tmp/nums
В классе CDC определен оператор HDC ()
, который позволяет компилятору преобразовывать объект CDC в HDC неявно. Следовательно, если у вас есть CDC * и функция, которая принимает HDC, вы просто разыменовываете указатель и отправляете его функции.
Если у вас есть объект CDC
, он будет неявно преобразован в HDC
при необходимости:
CDC dc;
HDC hdc = dc; // HDC hdc = dc.operator HDC();
Если у вас есть указатель на CDC
, то использование функции GetSafeHdc
будет выглядеть более ясным:
CDC* pdc = SOME;
HDC hdc = pdc->GetSafeHdc();
Еще несколько советов:
CDC
- это класс C ++, который - с разумным приближением - инкапсулирует HDC, который является дескриптором контекста устройства.
Документация, на которую вы ссылаетесь, описывает преобразование оператор
, который представляет собой конструкцию C ++, которую классы могут предоставить, чтобы разрешить неявное преобразование из экземпляра класса в какой-либо другой тип. В этом случае неявное преобразование приводит к базовому дескриптору (HDC), который инкапсулирует экземпляр CDC
.
Вы можете выполнить преобразование с помощью экземпляра CDC
в любом месте, где это необходимо быть преобразованным в HDC
.
Проще всего:
void f( const CDC& cdc )
{
HDC hdc = cdc;
// use hdc here
}
Просто назначьте его.
CDC cdc = something.
HDC hdc = cdc;
if (hdc != 0)
{
//success...
}