草庐IT

publication

全部标签

C++:私有(private)嵌套类类型的公共(public)成员

我有以下代码:classBase{private:classNestedBase{public:voidDo(){}};public:NestedBasenested;};intmain(){Baseb;b.nested.Do();//lineAcompilesBase::NestedBaseinstance;//lineBdoesn'tcompile}NestedBase类是Base的私有(private)嵌套类,因此B行不编译似乎很自然。但是,另一方面,变量b有公共(public)成员nested,我可以从外部调用它的方法Do()>Base(如A行)。在这种情况下,规范对私有(pr

c++ - 判断模板参数包中 "optimal"公共(public)数值类型

在模板参数包中确定常见数字类型的最佳方法是:最小尺寸,没有精度损失,并且将参数包中的任何类型转换为这种“理想”通用类型时没有上溢/下溢的风险吗?可变参数模板(best_common_numeric_type)可以像这样使用:templateautosome_numeric_func(constNumericTypes&...)->typenamebest_common_numeric_type::type;并有像下面这样的实例化:[1]best_common_numeric_type::type=double[2]best_common_numeric_type::type=unsig

c++ - 为什么即使不调用公共(public)复制构造函数也需要它?

拥有一个公共(public)拷贝构造函数将使这个小程序编译,但不显示副作用“复制”。#includeclassX{public:X(int){std::cout 最佳答案 您已经使用了所谓的“复制初始化”(在[decl.init]中定义)。定义的意思是使用int构造函数构造一个X类型的临时对象,然后使用复制构造函数从临时对象中初始化x。但是,在这种情况下,该标准还允许称为“复制构造函数省略”(在[class.copy]中定义)的优化。如果应用该优化,则没有临时的。x是使用int构造函数构造的,就好像您编写了所谓的“直接初始化”Xx(

c++ - 虚继承应该写 "public virtual"还是 "virtual public"?

基于http://en.wikipedia.org/wiki/Virtual_inheritanceclassAnimal{...};//TwoclassesvirtuallyinheritingAnimal:classMammal:publicvirtualAnimal{...};我还看到书籍使用以下语法,classMammal:virtualpublicAnimal{...};问题>哪个是C++标准?谢谢 最佳答案 来自ISO/IEC14882:2003(E)-10.1可以在类定义中使用以下符号指定基类列表:base-claus

C++ - 构造函数重载 - 私有(private)和公共(public)

你能告诉我为什么下面的代码会给我以下错误-重载“C(int)”的调用不明确我认为由于C(charx)是私有(private)的,所以只有C(float)ctor从外部可见,应该通过将int转换为float来调用它。但事实并非如此。classC{C(charx){}public:C(floatt){}};intmain(){Cp(0);} 最佳答案 ScottMeyer在“EffectiveC++”中对此进行了讨论。这是模棱两可的原因是他们想确保仅仅改变成员的可见性不会改变其他地方已经存在的代码的含义。否则,假设您的C类位于某个标题中

C++:公共(public)静态成员函数如何访问私有(private)实例成员变量?

我正在编写一个C++类来将文件中的输入读取到称为“block”的预分配缓冲区中。我希望调用者能够调用名为GetNextFilledChunk()的公共(public)静态Chunk类方法,该方法从非事件block池中获取一个block使用Chunk的私有(private)成员变量/函数从输入流填充Chunk实例返回一个指向block的指针给调用者但是第2步让我感到不适。无论我尝试过什么,尝试访问Chunk实例的私有(private)成员变量/函数都会导致g++4.2.1发出错误。这是头文件中的一段类定义:classChunk{public:Chunk();...staticChunk*

c++ - 游戏的公共(public)领域琐事数据库?

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭10年前。Improvethisquestion我的一个friend正在用C++做一个问答游戏,我替他问问有没有公共(public)领域的问答数据库?它最好是csv样式的格式,以便于解析,但其他格式也可以,只要问题好并且许可证是公共(public)领域?有没有人有任何提示。

c++ - 扩展公共(public)基础 : Diamond inheritance vs. QObject

我想我在这里遇到了一种菱形继承(钻石问题)问题。Qt提供了几个旋转框,用于整数值、double值以及日期/时间。它们都派生自QAbstractSpinBox:#includeclassQSpinBox:publicQAbstractSpinBox{};#includeclassQDoubleSpinBox:publicQAbstractSpinBox{};现在我想添加一些所有旋转框通用的功能,在这个具体示例中,一个按钮将旋转框恢复到其最小值(因此是specialValueText)。所以我也派生自QAbstractSpinBox并想出了这样的东西:classAbstractRevert

c++ - C++1y 中是否需要公共(public)类内类型定义?

我注意到std::容器往往有public,类内类型别名(typedef/using)。例如,参见http://en.cppreference.com/w/cpp/container/vector中的成员类型.它们有什么用?难道它们只是C++没有auto和decltype之类的东西的时代遗留物吗?当实现自定义容器时,它应该有这样的typedef吗?如果我不提供它们,我会失去什么? 最佳答案 如果你想要一个标准库兼容的容器,你必须提供typedef。如果您查看文档,例如在cppreference,你会看到这样的段落:std::vecto

c++ - 在 C++ 中声明公共(public)静态变量时出现链接错误

我有一个带有可变配置参数的类。我想将它包含在其他类中:JugadorHumano、JugadorIA、Main、PartidaClasica、PartidaMision.#pragmaonceclassConfiguracion{public:staticintMAX_ATAQUES;staticintDIV_TERRITORIOS;};intConfiguracion::MAX_ATAQUES=5;intConfiguracion::DIV_TERRITORIOS=3;我想要的是能够修改或读取其他类的值。我不能声明一个静态变量并在声明中定义它。我也不能让那些没有定义的变量因为我收到“