To start with, you probably get some compiler errors, if so you should have added them to the question as right now we can only guess.
Secondly, I'm guessing that it's because of your template parameter:
Foobar bla( v );
// ^^^^^^^^^
Here you tell the compiler that the template parameter is a pointer, but then you have the constructor:
Foobar( TContainer & container )
// ^^^^^^^^
In the constructor you declare container
to be a TContainer
with TObject*
members, but since TObject
already is a pointer you now have a pointer-to-pointer. If TObject
equals IUnknown*
then TObject*
equals IUnknown**
. You have the same problem when declaring the container_
member variable.
I recommend you drop the pointer-type when declaring bla
:
Foobar bla( v );
// ^^^^^^^^