Можно ли будет использовать трассировку в цикле for?

Мне нужно напечатать что-то в каждом утверждении цикла for. Потому что моя программа сбой цикла. Поэтому я попытался добавить трассировку в цикл for,

for (  ICollection::const_iterator iter = pCol->begin(NULL),OutputDebugString(L"One"); iter != pCol->end(NULL); ++iter)
{ //see OutputDebugString

Я получаю следующую ошибку,

Ошибка 1 Ошибка C2664:
«IIteratable :: ConstIterator :: ConstIterator (станд :: auto_ptr<_Ty>)»
: невозможно преобразовать параметр 1 из ‘const wchar_t [4]’ в
«Станд :: auto_ptr<_Ty> ‘filename.cpp 629

Теперь я попробовал то же самое в примере приложения, и он работает нормально,

void justPrint(std::string s)
{
cout<<"Just print";
}

int main()
{
int i;

for(i = 0,justPrint("a"); i<3; i++)
{

}

return 0;
}

И OutputDebugString, и justPrint возвращают void, что неправильно я делаю в своем коде.

0

Решение

Ошибка в том, что вы присваиваете возвращаемое значение OutputDebugString в iter, Попробуйте поменять порядок, потому что оператор запятая (,) дает последнее значение, которое в данном случае является возвращаемым значением OutputDebugString,

for (  ICollection::const_iterator iter = (OutputDebugString(L"One"), pCol->begin(NULL)); iter != pCol->end(NULL); ++iter)
{ //see OutputDebugString

Но это зачем тебе OutputDebugString там? Вы можете просто добавить его перед циклом for, чтобы избежать путаницы.


Если вам нужно напечатать отладочную строку после pCol->end(NULL), вы можете использовать вспомогательную функцию.

static ICollection::const_iterator begin_helper(SomeType &pCol) {
auto iter = pCol->begin(NULL);
OutputDebugString(L"One")
return iter;
}

for (  ICollection::const_iterator iter = begin_helper(pCol); iter != pCol->end(NULL); ++iter)
{ //see OutputDebugString
0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector