草庐IT

Classname

全部标签

java - 在 Java 中使用另一个构造函数

考虑:inta=0;intb=3;//Constructor1publicClassName(inta){this(a,b);//Error//newClassName(a,b)//Noerror}//Constructor2publicClassName(inta,intb){this.a=a;this.b=b;}第一个问题:我收到一条错误消息“bshouldbestatic”。为什么我不能以这种方式使用b的默认值(3)?第二个问题:在第一个构造函数中,如果我使用注释掉的部分,我不会得到错误。这是一种可接受的用法吗? 最佳答案 t

java单例实例化

我找到了三种实例化Singleton的方法,但我怀疑其中哪一种是最好的。我在多线程环境中使用它们并且更喜欢惰性实例化。示例1:privatestaticfinalClassNameINSTANCE=newClassName();publicstaticClassNamegetInstance(){returnINSTANCE;}示例2:privatestaticclassSingletonHolder{publicstaticfinalClassNameINSTANCE=newClassName();}publicstaticClassNamegetInstance(){returnS

c++ - 不明确的类命名空间问题

我...觉得问这个问题真的很傻,但我不确定如何解决这个问题。这是我的代码(Objective-C++)的一小段:#include"eq/eq.h"namespaceeqOther{classWindow:publiceq::Window//我得到的错误是:Useof'Window'isambiguous它说它在X.h中被声明为typedefXIDWindow而在window.h中被声明为classeq::Window是它的父类(superclass)。我声明的类应该在namespaceeqOther是吗?eqOther::Window不同于eq::Window!?我觉得自己太蠢了,但我

c++ - (静态初始化/模板实例化)工厂模式的问题

为什么以下代码会引发异常(在调用map::at的createObjects中)或者可以查看代码(及其输出)here有趣的是,如果注释行在microsoft和gcc编译器(参见here)中都被取消注释,代码将按预期工作,这甚至可以将initMap作为普通静态变量而不是静态getter使用。我能想到的唯一原因是静态registerHelper_对象(factory_helper_)和std::map对象(initMap)是错误的,但是我看不出这是怎么发生的,因为map对象是在第一次使用时构造的,而且是在factory_helper_构造函数中构造的,所以一切都应该没问题,不是吗?更令我惊讶

自由函数的 c++ 源代码组织

我想开始更喜欢免费(非成员)函数而不是成员函数-关注这篇文章http://www.drdobbs.com/184401197我习惯于以这种方式组织我的C++类,我有ClassName.h用于声明,ClassName.C用于实现。ClassName.h:structClassName{ClassName();voidsetData(unsigneddata);};然后是实现ClassName.C:#include"ClassName.h"ClassName::ClassName(){dosomething();};voidsetData(unsigneddata){dootherthin

c++将宏变量转换为wchar字符串文字的简单方法

在下面的示例中,我想删除std::wstring(std::widen(...))部分,但是'#'宏只返回一个char字符串文字--有什么方法可以容纳wchar吗?#defineFOO_MACRO(className)\structclassName##Factory:publicOtherClass{\//doessomestuffhere\}className##Factory;\someMap->add(std::wstring(std::widen(#className),className##Factory)))我如何使用wchar做同样的事情?

c++ - C++ 中的二维对象指针数组

如何分配指向对象的二维指针数组?目前我有:文件.hexternClassName**c;文件.cppClassName**c;intmain(){//somestuffc=newClassName*[sizex];for(inti=0;i编译失败,错误说明没有匹配operator=usingClassName和ClassName*,查看错误是有道理的。但是,如果我将c[i][j]的赋值更改为ClassNamecn();c[i][j]=cn;它给出了过多的其他错误。直到运行时(从标准输入读取)才能知道数组的大小,并且它也必须是外部的。在这种情况下声明数组的正确方法是什么?

c++ - 通过类的 const 引用传递

voidfoo(constClassName&name){...}如何访问类实例名的方法?name.method()无效。然后我尝试了:voidfoo(constClassName&name){ClassNametemp=name;.......}我可以使用temp.method,但是在执行foo之后,原来的名字搞砸了,知道吗?顺便说一句,name的成员变量并没有搞砸,而是类的子类的成员变量搞砸了。 最佳答案 根据您提供的描述,ClassName中的method()似乎是一个非常量方法。如果您尝试在const对象上调用非const方

c++ - "class ClassName;"放在其他类定义的头文件中是什么意思?

我对这行代码classTreeItem;有点困惑。classTreeItem;在本文件中未包含的其他文件中定义。我必须在一本书中查找这个问题,但我确信这个问题的答案非常简单。#ifndefTREEMODEL_H#defineTREEMODEL_H#include#include#includeclassTreeItem;//here,whatdoesthisdo??//![0]classTreeModel:publicQAbstractItemModel{...public:...private:...};//![2]#endif//TREEMODEL_H

java - 是否有等同于 Java <?在 C++ 中扩展 ClassName>?

我正在看这个https://docs.oracle.com/javase/tutorial/java/generics/subtyping.html和https://docs.oracle.com/javase/tutorial/java/generics/inheritance.html并问自己如何用C++实现它。我有这个小例子来说明:#includeclassAnimal{public:virtualstd::stringtype()const=0;virtual~Animal(){}};classDog:publicAnimal{public:virtualstd::string