请会c++又会java的达人帮助一下,把c++的程序改成java,谢谢了
请会c++又会java的达人帮助一下,把c++的程序改成java,谢谢了,我不会c++……
各位帮帮忙吧
Floor.h文件中的
class FloorI:virtual public Floor
{
virtual bool Register(const string & name,const Current & context);
virtual void SetInput(const string & content,const Current & context);
virtual void Unregister(const Current & context);
virtual void SetupCallback(const CallBackPrx & prx,const Current & context);
CacheMap m_cache_map;
};
class CallBackI:virtual public CallBack
{
public:
virtual void GetInput(const string & content,const Current & context);
};
FloorI.CPP中的
bool FloorI::Register(const string & name,const Current & context)
{
if(m_cache_map.find(name)!=m_cache_map.end())
return 0;
else
m_cache_map[name];
return 1;
}
void FloorI::Unregister(const Current & context)
{
Context::const_iterator q=context.ctx.find( "user_name ");
if(q!=context.ctx.end())
{
CacheMap::iterator p;
if((p=m_cache_map.find(q-> second))!=m_cache_map.end())
m_cache_map.erase(p);
}
}
void FloorI::SetupCallback(const CallBackPrx & prx,const Current & context)
{
Context::const_iterator p=context.ctx.find( "user_name ");
if(p!=context.ctx.end())
{
m_cache_map[p-> second]=prx;
}
}
void FloorI::SetInput(const string & content,const Current & context)
{
Context::const_iterator q=context.ctx.find( "user_name ");
if(q!=context.ctx.end())
{
CacheMap::iterator p;
for(p=m_cache_map.begin();p!=m_cache_map.end();++p)
{
if(p-> first!=q-> second)
{
Context ctx;
ctx[ "user_name "]=q-> second;
try
{
p-> second-> GetInput(content,ctx);
}
catch(ConnectionRefusedException e)
{
m_cache_map.erase(p);
cout < < " 挂了 " < <endl;
}
catch(NullHandleException e)
{
m_cache_map.erase(p);
cout < < " 没有诚意 " < <endl;
}
}
}
}
}
CALLBACK.CPP中的
void CallBackI::GetInput(const string & content,const Current & context)
{
Context::const_iterator q=context.ctx.find( "user_name ");
if(q!=context.ctx.end())
{
cout < < "[ " < <q-> second < < " say] " < <content < <endl;
}
}
这是相关 ICE 的一个聊天程序,各位帮帮忙吧 谢谢了
[解决办法]
有些多了 ~
楼主找一个 java 现成的不成么?
[解决办法]
这种事情应该没人会帮你做吧,你有什么地方不懂可以直接问,
CacheMap 是一个由string 到 bool的映射类型
Current 应该是一个由string 映射到string的类型
映射又称map、字典等等。
至于iterator是用来遍历一个映射类型的。
常用法
XX::iterator i;
for (i = xx.begin(); i != xx.end() i++)
{
i-> first;//这是映射的键
i-> second;//这是映射的值
}
find方法返回一个iterator,如果找不到,就会返回一个和xx.end()同样的值。
[解决办法]
java.util.Emu**也有相似的便利
[解决办法]
c++ ----- java
map <t,t> java.util.Property
[解决办法]
class FloorI implements Floor
{
public bool Register(String name, Current context);
public void SetInput(String content,Current context);
public void Unregister(Current context);
public void SetupCallback(CallBackPrx prx,Current context);
public CacheMap m_cache_map;
};
java中可是没有callback函数的
class CallBackI implements CallBack
{
public void GetInput(string content,Current context);
};
[解决办法]
public bool Register(String name,Current context)
{
if(m_cache_map.isEmpty())
return 0;
else
..?.//m_cache_map[name];
return 1;
}