클래스 하나가 있고 멤버 변수로 여러개의 std::vector 들이 있는데, 멤버 함수의 매개변수 자료형에 따라 해당 자료형에 맞는 vector에 push_back 하고 싶어서 시도 해봤는데 안되네요.


#include <vector>

enum class DATATYPE {

   INT,

    FLOAT,

    CHAR,

}


class Manager {

private:

    std::vector<int> int_arr;

    std::vector<float> float_arr;

   std::vector<char> char_arr;

public:

    template <typename T>

    void push(const T& data, const DATATYPE& data_type);

}


template <typename T>

void push(const T& data, const DATATYPE& data_type) {

    switch (data_type)

    {

    case DATATYPE::INT:

         int_arr.push_back(data); break;

    case DATATYPE::FLOAT:

         float_arr.push_back(data); break;

    case DATATYPE::CHAR:

         char_arr.push_back(data); break;

    default:

         break;

   }

}


int main() {

   Manager mgr;

    int i = 10;

    float f = 1.f;

    char c = 'a';


    mgr.push(i, DATATYPE::INT);

    mgr.push(f, DATATYPE::FLOAT);

    mgr.push(c, DATATYPE::CHAR);

    return 0;

}


 위에 코드처럼 vector가 클래스 맴버 변수로 있고, enum class로 vector에 넣을 변수의 자료형을 가르쳐 주고, 템플릿으로 해당 자료형에 맞는 자료형 레퍼런스를 사용해서 맞는 vector에 넣고 싶은데 안되네요.


에러코드 : E0304

설명      : 인수 목록이 일치하는 함수 템플릿 "Manager::push"의 인스턴스가 없습니다.


라고 뜨는데 해결 방법 (또는 다른 방법)을 알고 계신 분 있나요?