I get the error:
../ConcreteRequest.h:23:49: error: passing ‘const std::map, std::basic_string >’ as ‘this’ argument of ‘std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](std::map<_Key, _Tp, _Compare, _Alloc>::key_type&&) [with _Key = std::basic_string; _Tp = std::basic_string; _Compare = std::less >; _Alloc = std::allocator, std::basic_string > >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = std::basic_string; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = std::basic_string]’ discards qualifiers [-fpermissive]
#ifndef CONCRETEREQUEST_H
#define CONCRETEREQUEST_H
#include "RequestFactory.h"
#include "Request.h"
#include "MasterFile.h"
#include <map>
#include <string>
#include <iostream>
class ConcreteRequest : public RequestFactory
{
Request *createRequest(const std::map<std::string,std::string> &input) const
{
std::cout << "==Starting createRequest==" << std::endl;
Request *pRequest;
if (input["dataset"] == "masterfile")
{
pRequest = new MasterFile(input);
}
std::cout << "==Finishing createRequest==" << std::endl;
return pRequest;
}
};
#endif
This is for the if comparison. Why?