призрачный форум

www.prizrak.ws

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » www.prizrak.ws » Программирование » C++, STL - алгоритмы>>


C++, STL - алгоритмы>>

Сообщений 1 страница 2 из 2

1

Имеем
[td]//a.h

#ifndef _A_h_
#define _A_h_

class A
{
public:
void f();
void print( int & );
};

#endif
[/td]

[td]
// a.cpp
#include "a.h"
#include <vector>
#include <iostream.h>
#include <algorithm>
using namespace std;
void A::print( int &a )
{
cout<<a<<endl;
}
void A::f()
{
vector<int>  vi;
int i = 10;
while( i-- ) vi.push_back( i );
for_each( vi.begin(), vi.end(), print );
}
[/td]
ОТ такая ошибка
[td]
/*
Compiling...
A.CPP
...\A.CPP(16) : error C2664: 'for_each' : cannot convert parameter 3 from 'void (int &)' to 'void (__thiscall *)(int &)'
        None of the functions with this name in scope match the target type
Error executing cl.exe.

A.OBJ - 1 error(s), 0 warning(s)

*/[/td]

Может подскажет кто как ето лечится

0

2

Ошибка как ты понял тут "for_each( vi.begin(), vi.end(), print );"
Компилятор пишеь, что не может преобразовать функцию в функцию класса (функции класса неявно передается указатель на this). Лечится просто, почитай MSDN там есть подробные примеры :).

0


Вы здесь » www.prizrak.ws » Программирование » C++, STL - алгоритмы>>