#include <iostream>
#include <string>
#include <typeinfo>
#include <memory>
#include <map>
class IVariantClass{
public:
~IVariantClass(){};
};
template<typename Type>
class VariantClass: public IVariantClass {
public:
VariantClass(const Type& var): var_{var}{}
Type& GetVar() { return var_;}
private:
Type var_;
};
int main() {
std::map<int, double> var;
std::map<std::string , std::shared_ptr<IVariantClass>> args_value;
int x = 10;
double y = 10.22;
std::string str = "string";
args_value["val1"] = std::make_shared<VariantClass<decltype(x)>>(x);
args_value["val2"] = std::make_shared<VariantClass<decltype(y)>>(y);
args_value["val3"] = std::make_shared<VariantClass<decltype(str)>>(str);
for (typename std::map<std::string , std::shared_ptr<IVariantClass>>::iterator it = args_value.begin(); it!=args_value.end(); ++it) {
std::cout << it->first << " " << it->second->GetVar() << "\n" ;
}
return 0;
}
: В функции 'int main ()':
: 36: 54: ошибка: 'using element_type = class IVariantClass' {aka 'class IVariantClass'} не имеет члена с именем 'GetVar'
36 | std :: cout << it-> first << "" << it-> second-> GetVar () << "\ n"; </p>