Witam! Pracując nad szablonem klasy natrafiłem na następujący problem. Składową klasy jest vector, który w zależności od zadanego typu przy wywołaniu konstruktora (int,double,char,string itd) przyjmuje dane pochodzące od różnych metod składowych(tzn. np dla int przyjmuje liczby losowe a dla string ciągi wyrazów). Szablon posiada metodę add, która to rozpoznaje typ jaki zadaliśmy i na jego podstawie wywołuje odpowiednie funkcje( to co opisałem powyżej). W tym miejscu zaczyna się problem. Dla pojedynczego kodu ( zadeklarowane jedynie instrukcje dla int ) wszystko działa poprawnie lecz gdy tylko dodam metody zarówno dla int jak i dla string kompilator wykrywa problem z konwersją typów przy dodawaniu danych do wektora ( void std::vector<T,allocator<T>>:: push_back(_Ty&&)": nie można dokonać konwersji arguentu 1 z "int" do "const _Ty &")
#include <iostream>
#include <string>
#include <vector>
#include <typeinfo>
using std::string;
using std::vector;
using std::clog;
template<typename T>
class X
{
private:
vector<T> vec;
public:
void add()
{
if (typeid(F).name() == typeid(string).name())
{
vec.reserve(10);
for(T &x : vec)
x ="programista";
}
if (typeid(F).name() == typeid(int).name())
{
vec.reserve(10);
for(T &x : vec)
x =111;
}
}
};
Podejrzewam co jest przyczyną tego problemu lecz nie mam pojęcia jak go rozwiązać. Czy wie ktoś może jak rozwiązać ten problem ? Dziękuję za odpowiedzi i pozdrawiam !