473,396 Members | 2,033 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

functors .

Hi,

I need to pass a member function of the form C::foo(B* b, A& a) to a generic
function:

template<typename Func>
void CLASS2::bar(Func f)
{
...

f(b, a);
}
void C::g()
{
....

class2->bar( C::foo );
}

It does not work. I tried mem_fun, but that also did not work. Effective
STL page 175 gives an example of mem_fun when the function takes no
parameters.

error C2784: 'std::const_mem_fun1_t<_Result,_Ty,_Arg> std::mem_fun(_Result
(__thiscall _Ty::* )(_Arg) const)' : could not deduce template argument for
'overloaded function type' from 'overloaded function type'
Sep 10 '05 #1
2 1339

"vsgdp" <sp**@nospam.com> wrote in message
news:N7tUe.6254$mH.3663@fed1read07...
Hi,

I need to pass a member function of the form C::foo(B* b, A& a) to a
generic function:

template<typename Func>
void CLASS2::bar(Func f)
{
...

f(b, a);
}
void C::g()
{
...

class2->bar( C::foo );
}

It does not work. I tried mem_fun, but that also did not work. Effective
STL page 175 gives an example of mem_fun when the function takes no
parameters.

error C2784: 'std::const_mem_fun1_t<_Result,_Ty,_Arg> std::mem_fun(_Result
(__thiscall _Ty::* )(_Arg) const)' : could not deduce template argument
for 'overloaded function type' from 'overloaded function type'

The easiest way is to look at the function template from boost.

Ben
Sep 10 '05 #2
vsgdp wrote:
Hi,

I need to pass a member function of the form C::foo(B* b, A& a) to a
generic function:
You cannot pass a function, you can only pass a pointer to it.

template<typename Func>
void CLASS2::bar(Func f)
{
...

f(b, a);
}
void C::g()
{
...

class2->bar( C::foo );
class2->bar( &C::foo );
}

It does not work.


Well, how would the compiler know which object to call the member function
for? You have to specify that. The syntax for calling a member function
through pointer is:

(object.*function)(parameters);

or for a pointer to the object:

(object->*function)(parameters);

Sep 10 '05 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: red floyd | last post by:
Disclaimer: VS.NET 2003 (haven't checked any other compiler). I'm writing functors for my classes. Because the objects in my containers are large, I'm making my functors take const T& parameters....
41
by: AngleWyrm | last post by:
I have created a new container class, called the hat. It provides random selection of user objects, both with and without replacement, with non-uniform probabilities. Uniform probabilities are a...
2
by: nsgi_2004 | last post by:
Hi, I have been learning about functors and at first everything was clear. Make a class and overload operator () so that an object of the functor can be thought of as a function. However, I...
1
by: Matthias | last post by:
Hello, I basically want to implement a general resource manager which should have a caching and a loading policy so that I can exchange those. Here's some example code of how it should work: ...
4
by: Fraser Ross | last post by:
Functors taking 1 argument for operator() should inherit from unary_function and those with 2 arguments should inherit from binary_function. If a functor has zero arguments for its operator()...
8
by: michael.lesniak | last post by:
Hello, I'm learning C++ for a couple of days and play a bit with the algorithms provided in the STL. One thing I don't understand is the fact that classes inherited of functors have to be...
4
by: tryptik | last post by:
Hello all, I have a question about iterators. I have a container of functors that operate on an std::string. The functors go something like this: class Functor { std::string...
2
by: Jon Slaughter | last post by:
I'm trying to mess with functors and the way I want it to work is that when I create a functor it will automatically add itself to an array. The attached code demonstrates what I mean. The...
4
by: Christopher | last post by:
I used to just use a plain old function pointer is a call to std::sort. My colleagues are telling me that I need to use a "functor". Ok, I google and see that a functor is a class with a public...
9
by: laikon | last post by:
dear, all: below is a function with a parameter of function pointer. void f(int a, int b, int (*fp)(int, int)) { std::cout << fp(a, b) << std::endl; }
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.