need a const construtor. when vs2010 is ok, gcc need your change.

本文深入探讨了C++类IncludeChainInfo及其成员函数的实现,以及如何通过IncludeChainUniverse类添加新的IncludeChain。重点阐述了如何赋值、构造函数和成员变量的使用,同时介绍了类间交互和数据结构的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class IncludeChainInfo
{
public:
IncludeChainInfo(){};
~IncludeChainInfo(){};
void AssignValue(const IncludeChainInfo &in)
{
schemaId        = in.schemaId;
enableVADMangle = in.enableVADMangle;
chains    = in.chains;
};
IncludeChainInfo(IncludeChainInfo &in)
{
AssignValue(in);
};
IncludeChainInfo(const IncludeChainInfo &in)  //if no here, will cause error when do _includeChainToInfo[marketConfigName] = info;
{
AssignValue(in);
};
IncludeChainInfo& operator=(const IncludeChainInfo& in)
{
AssignValue(in);
return *this;
};


int schemaId;
bool                    enableVADMangle;
std::set<std::string>chains;
};


std::map<std::string, IncludeChainInfo>      _includeChainToInfo;  //MarketName - IncludeChainInfo



void IncludeChainUniverse::AddNewIncludeChain(const std::string &marketConfigName, const IncludeChainInfo &info, const std::string &vadMangleString)
{
//
// Chain
//
auto &chains = info.chains;
for(auto iter = chains.begin(); iter != chains.end(); ++iter)
{
auto chainName = *iter;
if(info.enableVADMangle)
{
chainName = vadMangleString + chainName;
}
if(!_includeChainsByName.HasKey(chainName))
{
LOG_INFO("Include chain:" << chainName);
_includeChainsByName[chainName] = std::make_shared<input::chain::SimpleChainManualRequest>(chainName, info.schemaId);
_includeChainsByName[chainName]->Subscribe(input::chain::ChainManualEvent::ChainManualEvent_RicAdd, &IncludeChainUniverse::OnItemAdd, this);
_includeChainsByName[chainName]->Subscribe(input::chain::ChainManualEvent::ChainManualEvent_RicDel, &IncludeChainUniverse::OnItemDelete, this);
_includeChainToInfo[marketConfigName] = info;  //here will be error if no const construtor
_includeChainsByName[chainName]->RequestChain();
}
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值