c++ Runtime template parameter identification

pseudomarvin

I am writing a game and I use a ResourceHolder template class which provides functions to load and access a resource(texture, music, font...). It works great for Texture or Font classes because they have the same interface for loading(their functions are called "loadFromFile") but the Music class works a bit differently and it has an "openFromFile" function instead (I use a library called SFML).

template <typename Resource, typename Identifier>
void ResourceHolder<Resource, Identifier>::load(Identifier id, 
                                                const std::string & fileName)
{
    std::unique_ptr<Resource> resource(new Resource());

    resource->loadFromFile(fileName);
}

I tried an if-else approach:

if (typeid(id).name() == "Resources::MusicType")
    resource->openFromFile(fileName);
else
    resource->loadFromFile(fileName);

But compiler throws an error when compiling the Texture version of the template since it doesn't have openFromFile method. I also considered passing the function as a third template parameter but I'd like to know whether there is a better solution. Thanks.

zmbq

Template Specialization is your friend.

Basically you can create a specialized function for specific types:

template <typename Resource>
void ResourceHolder<Resource, MusicType>::load(...)

I'm not sure this is the right way, as I'm not sure what's the difference between Resource and Identifier, and how you use them.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Pass a function template as a parameter in C++

From Dev

C++ Smart pointer in a template parameter

From Dev

C++14 variable template with default template parameter?

From Dev

C++ template and shadow parameter

From Dev

c++ template: boost::mpl::transform with template template parameter

From Dev

Best practice for "unused template parameter" in C++

From Dev

C++: Inherit class from template parameter

From Dev

C++ runtime decision for a template type

From Dev

C++ Template with class method as parameter

From Dev

C++: Inheritance from template parameter

From Dev

C++ Template class methods that do not use template parameter

From Dev

C++ template parameter with default parameters

From Dev

c++ template parameter type inference

From Dev

C++ default parameter in template not allowed?

From Dev

C++ template return parameter

From Dev

C++ dynamic downcasting to class template having template template parameter being a class template or an alias template

From Dev

C++03 check if template parameter is void?

From Dev

C++ template parameter deduction by assignment

From Dev

C++ function template overload on template parameter

From Dev

Using function template as template template parameter in C++

From Dev

Calling a static function on a template parameter in C++

From Dev

Passing in template class reference as parameter in c++

From Dev

Add Parameter to XElment on Runtime C#

From Dev

C++ Template Parameter that evaluates a Template (template template parameter)

From Dev

Constructor with another template class as a parameter in C++

From Dev

C++ struct functor as function template parameter

From Dev

C++, select function by template parameter

From Dev

C++ std::plus as template parameter

From Dev

Is c++ STL template parameter precise enough?

Related Related

  1. 1

    Pass a function template as a parameter in C++

  2. 2

    C++ Smart pointer in a template parameter

  3. 3

    C++14 variable template with default template parameter?

  4. 4

    C++ template and shadow parameter

  5. 5

    c++ template: boost::mpl::transform with template template parameter

  6. 6

    Best practice for "unused template parameter" in C++

  7. 7

    C++: Inherit class from template parameter

  8. 8

    C++ runtime decision for a template type

  9. 9

    C++ Template with class method as parameter

  10. 10

    C++: Inheritance from template parameter

  11. 11

    C++ Template class methods that do not use template parameter

  12. 12

    C++ template parameter with default parameters

  13. 13

    c++ template parameter type inference

  14. 14

    C++ default parameter in template not allowed?

  15. 15

    C++ template return parameter

  16. 16

    C++ dynamic downcasting to class template having template template parameter being a class template or an alias template

  17. 17

    C++03 check if template parameter is void?

  18. 18

    C++ template parameter deduction by assignment

  19. 19

    C++ function template overload on template parameter

  20. 20

    Using function template as template template parameter in C++

  21. 21

    Calling a static function on a template parameter in C++

  22. 22

    Passing in template class reference as parameter in c++

  23. 23

    Add Parameter to XElment on Runtime C#

  24. 24

    C++ Template Parameter that evaluates a Template (template template parameter)

  25. 25

    Constructor with another template class as a parameter in C++

  26. 26

    C++ struct functor as function template parameter

  27. 27

    C++, select function by template parameter

  28. 28

    C++ std::plus as template parameter

  29. 29

    Is c++ STL template parameter precise enough?

HotTag

Archive