Templates et undefined references
Bonjour tout le monde,
Je me permets de venir vers vous pour une question ridicule mais où je suis incapable de trouver la solution...
J'ai actuellement une classe définie comme ceci
socketshandler.hpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
#ifndef __SOCKETSHANDLER_HPP__
# define __SOCKETSHANDLER_HPP__
# include <iostream>
class SocketsHandler
{
/* Variables */
private:
public:
enum TYPE { RabbitMQ };
/* Methods */
private:
public:
SocketsHandler();
~SocketsHandler();
template <typename ...Args>
void addHandler(SocketsHandler::TYPE type, Args &&...args);
};
#endif // !__SOCKETSHANDLER_HPP__ |
socketshandler.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
#include "socketshandler.hpp"
//-----------------------------------------------------
SocketsHandler::SocketsHandler()
//-----------------------------------------------------
{
}
//-----------------------------------------------------
SocketsHandler::~SocketsHandler()
//-----------------------------------------------------
{
}
//-----------------------------------------------------
template <typename ...Args>
void SocketsHandler::addHandler(SocketsHandler::TYPE type, Args &&...args)
//-----------------------------------------------------
{
} |
et le main
Code:
1 2 3 4 5 6 7 8 9 10 11
|
#include "socketshandler.hpp"
int main()
{
SocketsHandler toto;
toto.addHandler(SocketsHandler::TYPE::RabbitMQ, "Toto", "tata");
} |
Le problème est que quand je compile j'obtiens le message suivant
Citation:
test.cpp:(.text+0x2c): undefined reference to `void SocketsHandler::addHandler<char const (&) [5], char const (&) [5]>(SocketsHandler::TYPE, char const (&) [5], char const (&) [5])'
Ce que je ne comprends pas c'est que si je définis ma fonction "addHandler" dans mon .hpp, je n'ai pas l'erreur...
Je n'arrive pas à voir ce que je fais de mal :(
Est-ce que quelqu'un peut m'aiguiller?
J'ai beau chercher sur les templates ou sur les variadics... je ne trouve rien qui pourrait m'aider