Making an object of template class

c++, object, qt, templates

Solution

If you want `MyClass` to be a template as well, you would do it like this:

template<typename T>
struct MyClass {
    TempClass<T> temp;
};

(You could also use `class` instead of `struct`, but since all members are public, you don't really need default private.)

If you don't want `MyClass` to be a template, you will need some concrete type to substitute in for `T`. For example:

struct MyClass {
    TempClass<string> temp;
};

Pedantic: Technically `TempClass` isn't a template class, it's a class template. A class template isn't actually a class, it's a template that can be used to create individual classes that are themselves template classes. Thus, `TempClass` is a class template, while `TempClass<string>` is a template class --- a class that is created by instantiating a template.

Problem

I have a template class defined : ``` template <class T> class TempClass { ... }; ``` If I want to make an object of this class in let's say some MyClass.h to access functions of template class, how shall I pass the argument of the template? I tried to do the following: ``` class MyClass{ public: TempClass<T> temp; } ``` Sure, as supposed it does not work, as T is not defined in MyClass, so I am a bit lost how do it correctly. Thanks.

Original source