Re: Assignment on map
On 23/11/2010 09:36, Andrea Crotti wrote:
What's wrong with this thing?
std::map<std::string, Param> int_params;
Param p(1,10);
int_params["sadf"] = p;
This tries to default construct a Param and then assign to it. Param
doesn't have a default constructor, so it fails. You either need to give
Param a default constructor (if it makes sense), or you need to use:
int_params.insert(std::make_pair(std::string("sadf"), p));
Cheers,
Stu
Where this is Param?
typedef unsigned int int_param_t;
class Param
{
private:
int_param_t min;
int_param_t max;
int_param_t value;
std::string name;
public:
Param(int_param_t _min, int_param_t _max) : min(_min), max(_max) {}
void set(int_param_t);
void set(const std::string&);
};
Trying to compile it says
expected constructor, destructor, or type conversion before '=' token
But why? the object is created, the map is there...
I also tried with a temporary string but it's the same.
std::map<std::string, Param> int_params;
string s("name");
Param p(1,10);
int_params[s] = p;