클래스 하나가 있고 멤버 변수로 여러개의 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"의 인스턴스가 없습니다.
라고 뜨는데 해결 방법 (또는 다른 방법)을 알고 계신 분 있나요?