草庐IT

c++ - 自动向下转换指向派生对象的指针

早上好我有一个模板化类,我想通过指针vector来操作对象。要使用指向模板化类的指针vector,我需要从非模板化类派生此类,我做到了。这是我的问题:要从指向基类的指针调用派生类的方法,我不能使用虚函数,因为不能将模板函数设为虚函数。我需要进行显式转换,这很乏味:一旦使用new创建数字对象,实际上需要向下转换为number*,尽管该对象事先已知为数字。我以一种笨拙的方式解决了这个问题:函数myset测试所有支持的typeid值以获得正确的动态转换。它是执行typeid检查的一长串嵌套ifs。除了繁琐之外,该函数仅适用于调用'set'方法,并且应定义类似的函数以调用其他方法。如果我可以对

c++ - 大象号到底是什么?

我写这个问题让自己处于大规模反对票的风险。但我仍然想冒险,因为我真的很好奇,我想知道什么是大象数字。2天前,有一位新用户在Howtotellifanumberisanelephantnumber?上发帖提问他在采访中提到了这个问题。删除前看过这个问题的friend,请问大象数是多少?? 最佳答案 问题通常不会被删除,所以我认为没有答案。有趣的是,Google拒绝在前两页中提出任何对该短语的编程引用。不过我能猜到问题的答案是什么:问很多时候在编程时你得到的信息不完整(事实上几乎在所有情况下)。如果我在面试中问了这个问题,我希望受访者从

c++ - 我如何使用 11 位数字

我想在我的变量-number中输入一个11位数字,但我认为没有那么多内存。我尝试使用*number和int*number=newint[100],但它不起作用。我还想在我的变量-name中添加姓名和姓氏,但每次我使用空格时,它也会停止工作。我该如何解决这些问题?#include#includeusingnamespacestd;structNOTE{stringname;intnumber;intbirthday[3];};intmain(){//int*tel=newint[100];//int*ptr=newint;NOTEarr[3];cout>arr[i].name;cout>

不使用 atoi() 或 stoi() 的 C++ 字符串到 int

这个问题在这里已经有了答案:HowtoparseastringtoanintinC++?(17个答案)关闭7年前。嗨,我是C++的新手,正在尝试做一个作业,我们从一个格式为txt的文件中读取大量数据surname,initial,number1,number2在有人建议将2个值读取为字符串然后使用stoi()或atoi()转换为int之前,我寻求帮助。这很好用,除了我需要使用这个参数“-std=c++11”进行编译,否则它将返回错误。这在我自己的计算机上不是问题,它将处理“-std=c++11”,但不幸的是,对我来说,我必须在其上展示我的程序的机器没有这个选项。是否有另一种方法可以将字

c++ - D3D11 : variable number of lights in HLSL

我正在使用C++和Direct3D11开发游戏引擎,现在我想向场景中添加可变数量的灯光。到目前为止,我设法添加和渲染了一些已知的并在着色器程序中编码的简单灯光。在shader.fx中:staticconstintLightsCount=4;structNF3D_LIGHT{//Members...};cbufferLight:register(b5){NF3D_LIGHTlight[LightsCount];};...//Andthepixelshaderfunction:float4PS(PS_INPUTinput):SV_Target{for(inti=0;i这很好用。但如果我尝试

C++ 友元运算符重载不编译

我有以下(简化的)类定义,它有编译错误。#include#includeclassnumber{public:friendstd::ostream&operator>(std::istream&s,number&num);friendstd::string&operator>>(std::string,number&num);protected:private:voidwrite(std::ostream&output_target=std::cout)const;voidread(std::istream&input_source=std::cin);voidto_string(st

c++ - 使用 -g 选项编译但 "Single stepping until exit from function main, which has no line number information"

我在使用gdb时遇到了一些问题。这是我在一个名为main.cpp的文件中的代码#includevoidmyfunc();intmain(){charmsg[]="HelloWorld!";myfunc();std::cout我使用这个命令来编译这段代码:g++-g-Wallmain.cpp-ofoo接下来,我使用了gdb:$gdbfoo(gdb)startTemporarybreakpoint1at0x80487c3Startingprogram:/home/laptop/workspace/fooTemporarybreakpoint1,0x080487c3inmain()(gdb)

c++ - 为什么 boost::hash_combine 中的魔数(Magic Number)是十六进制指定的

本例中的魔数(MagicNumber)是0x9e3779b9,以10为基数是2654435769。代码有什么原因吗seed^=hash_value(v)+0x9e3779b9+(seed>2);使用十六进制表示而不是base-10表示?如果将代码中的0x9e3779b9替换为2654435769,功能是否会保持不变? 最佳答案 字面量就是字面量,同一字面量的不同表示形式……字面上相同。但是,表达式(文字或非文字)也有一个类型。等效的字面量应该是2654435769u(注意类型后缀使其成为unsigned)。看看这个简单的测试Live

c++ - 为什么析构函数在 C++ 中运行两次?

在做我的编程作业时,我似乎被基本的C++概念绊倒了。我在我的程序中发现了这个错误,它是由我的析构函数运行的次数超出我的预期造成的。这是一个代码示例,展示了我做错了什么,直到最基本的部分。#includeusingnamespacestd;classA{public:A(intnum){number=num;cout我希望发生的是Afoo(7);在堆栈上为名为foo的A对象分配空间并调用构造函数,传递7。它将7分配给number并打印指示构造函数运行的输出。现在Bbar(foo);在堆栈上为名为bar的B对象分配空间并调用构造函数,传递foo按值,它只是int的容器。构造函数将传递给它的

c++ - 陷入无限循环? (可能是)

我正在尝试完成欧拉计划Problem14在C++中,老实说我被困住了。现在,当我运行问题时,它卡在了SoFar:thenumberwiththehighestcount:113370withcountof155到目前为止:计数最高的数字,但是当我尝试将i值更改为超过113371时,它起作用了。这是怎么回事??问题是:Thefollowingiterativesequenceisdefinedforthesetofpositiveintegers:n→n/2(niseven)n→3n+1(nisodd)Usingtheruleaboveandstartingwith13,wegenera