Archived

This forum has been archived. Please start a new discussion on GitHub.

use ICE proxy in STL map ,error C2440,C2439

I want extend the chat sample in ICE package ,so I define below slice file:
interface RemoteControlable
		{
			 
			
		 
			int excuteCommand(int cmd);						 
			int excuteCommandWithContent(int cmd,string cmdContent);   
			
			 
			int putFile(string name,ByteSeq bytes);						 
			ByteSeq readFile(string name, int offset, int num);		 
			void writeFile(string name, int offset, ByteSeq bytes);	 

		};	 

interface CmnService extends RemoteControlable
		{			 
		 
			void initiateRemoteControl(RemoteControlable* proxy,string clintId);
			
		 
		};


I want to use CmnService class in server ,which manage the callback proxy of the client.
So I define a type in my C++ class:
typedef map<string, RemoteControlable*> StringRemoteControlableProxyMap;
.....
void CmnServiceI::initiateRemoteControl(const RemoteControlablePrx& proxy, const ::std::string& str, const ::Ice::Context* c)
{
	string key(str);
	StringRemoteControlableProxyMap::iterator pos=this->connectedClients.find(key);
	if(pos!=this->connectedClients.end())
	{
		 
		cout<<"RemoteControlablePrx:"<<str<<"has exist."<<endl;
		return;
	}
	
	
	 
	this->connectedClients.insert(
		make_pair(key,const_cast<RemoteControlablePrx*>(&proxy))
		);
	cout<<"initiateRemoteControl:"<<str<<endl;
	
}


I compile these code in VC++2005,bug it report error:
erro 1 error C2440: “init”: can not convert “IceInternal::ProxyHandle<T> ” to“RemoteControlable *” c:\program files\microsoft visual studio 8\vc\include\utility 44
error 2 error C2439: “std::pair<_Ty1,_Ty2>::second”: can not init member c:\program files\microsoft visual studio 8\vc\include\utility 44

can give me some help?

Comments

  • question solved

    sorry,I found my error and correct!

    ::IceInternal::ProxyHandle<... > is a smart pointer!


    typedef map<string,RemoteControlablePrx> StringRemoteControlablePrxMap;
    worked fine!

    Thanks very much!
    ICE is an excellent project!!!