T
tryptik
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 operator()(const std::string& s) {/*manipulate
string*/; return newString;}
};
Now, I want to call the functors on a string argument. I write
something like this:
std::vector<Functor> vec;
/*Omitted creation and push_back of a couple Functors */
std::vector<Functor>::const_iterator it = vec.begin();
std::vector<Functor>::const_iterator end = vec.end();
std::string arg("Test argument");
for(; it != end; it++)
std::cout << *it(arg) << "\n"; //Why doesn't this work?
Instead of using the de-reference operator '*', I have to write the
following:
it->operator()(arg);
Can some kind soul explain to me why this is? I prefer the cleaner
syntax of the first statement.
-tryptik
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 operator()(const std::string& s) {/*manipulate
string*/; return newString;}
};
Now, I want to call the functors on a string argument. I write
something like this:
std::vector<Functor> vec;
/*Omitted creation and push_back of a couple Functors */
std::vector<Functor>::const_iterator it = vec.begin();
std::vector<Functor>::const_iterator end = vec.end();
std::string arg("Test argument");
for(; it != end; it++)
std::cout << *it(arg) << "\n"; //Why doesn't this work?
Instead of using the de-reference operator '*', I have to write the
following:
it->operator()(arg);
Can some kind soul explain to me why this is? I prefer the cleaner
syntax of the first statement.
-tryptik