Ошибка C4839: нестандартное использование класса 'ATL::CW2AEX<520>' в качестве аргумента для функции с переменными числами
Я использую Curl в проекте, и моя функция возвращает ошибку о CW2AEX.
const TCHAR* path;
const TCHAR* fileName;
TCHAR url[ MAX_PATH ] = { 0 };
_stprintf( url, _T( "%s%s" ), path, fileName );
char errorCode[ CURL_ERROR_SIZE ] = { 0 };
function( curl, CURLOPT_ERRORBUFFER, errorCode );
function( curl, CURLOPT_HEADER, 0 );
function( curl, CURLOPT_FOLLOWLOCATION, 1 );
function( curl, CURLOPT_NOPROGRESS, 0 );
function( curl, CURLOPT_WRITEDATA, isMemoryDownload ? ( void* )( &memoryFile ) : ( void* )( &diskFile ) );
function( curl, CURLOPT_WRITEFUNCTION, isMemoryDownload ? CNetwork::WriteToMemory : CNetwork::WriteToDisk );
function( curl, CURLOPT_PROGRESSDATA, 0 );
function( curl, CURLOPT_PROGRESSFUNCTION, CNetwork::Pursuit );
function( curl, CURLOPT_URL, CW2AEX< sizeof( url ) >( url ) );
Я предполагаю, что он должен загрузить значение явно, чтобы скомпилировать его. Не тихо уверен?
1 ответ
Сообщение об ошибке дает подсказку: для аргумента переменной функции необходимо разрешить неоднозначность типа и привести вспомогательный класс к приемлемому типу:
function(curl, CURLOPT_URL, (LPCSTR) CW2AEX< sizeof( url ) >( url ) );
Вы также можете сделать это проще с минимальными затратами (используя CStringA
):
function(curl, CURLOPT_URL, (LPCSTR) CStringA(url));