草庐IT

c++ - 我不明白这个霍夫曼算法的实现

templatevoidhuffman(MinHeap*>heap,intn){for(inti=0;i*first=heap.pop();TreeNode*second=heap.pop();TreeNode*bt=newBinaryTreeNode(first,second,first.data,second.data);heap.push(bt);}}在我的FundamentalsofDataStructuresinC++教科书,它给出了霍夫曼编码的2页定义,以及上面的代码。对我来说,这本书不够详细,所以我进行了谷歌搜索,了解了霍夫曼编码的过程是如何工作的。教科书声称在上面代码的

c++ - 重载 ‘QString(int)’ 不明确

下面的代码片段给出了编译错误重载“QString(int)”的调用不明确与qt4.7.3(系统是linux64bit,debian不稳定)structQSAConnection{QSAConnection():sender(0),signal(0),function_ref(){}QSAConnection(QObject*send,constchar*sig,QSObjectref):sender(send),signal(QLatin1String(sig)),function_ref(ref){}QObject*sender;QStringsignal;QSObjectfunct

C++临时类实例化不明确

让我们将过程形成为类。只有构造函数调用会产生一些副作用。调用后无需在内存中处理类实例。以下代码实例化该类:structA{A(int){}};intmain(){A(0);//right.Passconsttoctorintx=0;A(x);//bad.CompilerinterpretlikeAx;(A(x));//right.NewtemporaryobjectpassedtobracketsA((int)x);//right.Passtemporaryinttoctorreturn0;}(另见OnlineIDE)为什么是A(x);解释为变量x声明而不是临时A对象实例化?

c++ - 不明确的符号 - 无法从 ado::DataTypeEnum 转换为 DataTypeEnum

尝试编译包含SQL库的C++项目并出现以下错误:errorC2664:'CNCQuickADO::ConvertADOType':cannotconvertparameter1from'ado20::DataTypeEnum'to'DataTypeEnum'ConversiontoenumerationtyperequiresanexplicitcasterrorC2664:'CNCQuickADO::ConvertADOType':cannotconvertparameter1from'ado20::DataTypeEnum'to'DataTypeEnum'Conversiontoe

c++ - 当类的多重继承本身在其层次结构中具有菱形继承时,功能继承不明确

文字描述(下面的代码):我有一个提供类集合的库。对于每组类,我们有两个具体类型,(ClassA_Partial,ClassA),(ClassB_Partial,ClassB)等。这些分别实现(Interface_Partial、Interface)。此外,Interface是一个Interface_Partial并且每个Class?是一个Class?_Partial-创建一个菱形继承模式,其中顶部是虚拟继承的。为什么在同时继承ClassA和ClassB时,Interface_Partial函数不明确?structInterface_Partial{virtual~Interface_P

C++11 自动/我不明白的东西

好的。这是我的代码:CShop::~CShop(){TPacketGCShoppack;pack.header=HEADER_GC_SHOP;pack.subheader=SHOP_SUBHEADER_GC_END;pack.size=sizeof(TPacketGCShop);Broadcast(&pack,sizeof(pack));GuestMapType::iteratorit;it=m_map_guest.begin();while(it!=m_map_guest.end()){LPCHARACTERch=it->first;ch->SetShop(NULL);++it;}M

c++ - 使用枚举基编写枚举时出现不明确的重载,但仅使用 clang

我想使用operator#includeenummyenum:uint16_t{X=0,};intmain(){std::coutgcc4.8和visualstudio2015没有这个问题。clang++-3.6错误#clang++-3.6-std=c++11-O0ostream.cpp-otest.exeostream.cpp:18:29:error:useofoverloadedoperator'>'and'myenum')std::cout总的来说,在严格遵守方面,我倾向于相信clang,所以也许使用确实是模棱两可的。枚举当然可以转换为其他类型的整数。我希望编译器更喜欢与枚举的基

c++ - 为什么这些方法调用不明确?

#includeusingString=std::string;classBase{protected:Stringvalue;};classReadonly:virtualBase{public:constString&method()const{returnvalue;}String&method(){returnvalue;}};classWriteonly:virtualBase{public:Writeonly&method(constString&value){this->value=value;return*this;}Writeonly&method(String&&v

c++ - 全局函数和不明确的参数 NULL 与 char* 在 vs 2013 和 GCC 之间

我试图了解当前C++14标准关于解决模糊函数调用的内容,主要是因为我看到GCC4.9.1和VisualStudio2013更新3之间的差异这是代码(MS和GCC完全相同):#includeusingnamespacestd;voidf(char*str,intchars){coutVisualStudio使用默认vs标志调用f(char*,int)GCC给了我一个编译器错误:重载'f(char*&,NULL)'的调用不明确。gcc仅使用-std=c++11标志。 最佳答案 这取决于NULL的定义。MSVC将其定义为0,因此int重载

c++ - 解决 C++ 中不明确的 this 指针

我正在尝试从旧类派生新类。基类声明如下所示:classDriver:publicPlugin,publicCmdObject{protected:Driver();public:staticDriver*GetInstance();virtualEngine&GetEngine();public://Pluginmethods...virtualboolInitPlugin(Mgr*pMgr);virtualboolOpen();virtualboolClose();//CmdObjectvirtualboolExecObjCmd(uint16cmdID,uint16nbParams,