Code:
#include <Data.h>
int main(int arg_count, char** argv)
{
    if(arg_count!=3){
        cerr<<"Files misisng\n";
        exit(1);
    }

    Data object;
    object.read_ref(argv[1]); //
    object.read_mmp(argv[2]); //


    std::map<std::string,Polymorphism> temp= object.ret_poly();
    object.test(temp);// this works completely fine.. 
    //object.test(object.ret_poly()); // this doesn't work

    return 0;

}
Data.h:
Code:
class Data
{
    public:
        /** Default constructor */
        Data();
        void read_ref(const char* ); 
        void read_mmp(const char*);
        void test(std::map<std::string,Polymorphism>&); //some issue if I use  object.test(object.ret_poly());
        void set_poly(std::map<std::string, Polymorphism>&);
        std::map<std::string, Polymorphism> ret_poly();

    protected:

    private:
    std::map<std::string, Polymorphism> polymorphisms;
    std::map<std::string, std::string> reference;

};
Data.cpp file
Code:
void Data::set_poly(std::map<std::string, Polymorphism>& t_poly){
    polymorphisms=t_poly;

}

std::map<std::string, Polymorphism> Data::ret_poly(){
    return(polymorphisms);
}

void Data::test(std::map<std::string,Polymorphism>& temp_poly){
}
//object.test(object.ret_poly());
This actually should work, because it is passing address of polymorphisms object.
I have tried changing prototype of test in Data.h, but failed.

Kindly help me understand, passing object address/pointers in C++.