草庐IT

成员方

全部标签

c++ - 根据 ISO 2003,内部类可以访问外部的私有(private)成员

如ISOC++2003中所述§11.8Nestedclasses[class.access.nest]Themembersofanestedclasshavenospecialaccesstomembersofanenclosingclass,nortoclassesorfunctionsthathavegrantedfriendshiptoanenclosingclass;theusualaccessrules(clause11)shallbeobeyed.Themembersofanenclosingclasshavenospecialaccesstomembersofaneste

c++ - 具有许多成员变量的类的最佳实践

简短的问题:如果你必须有很多(甚至超过200个)成员变量(它们中的每一个都将是我们分析中感兴趣的一些物理量的图)。声明这些变量的最佳位置是什么?详细解释:我用于分析的框架创建了一个类来循环事件,它可以缩小到constructor()initialize()execute()finalize()在header中,您可以像这样声明指针(这显然是我们必须使用的ROOT包的要求):std::vector*m_jet_pt;和指向直方图类的指针:TH1F*h_jet_pt;然后在constructor中,必须将指针初始化为某个明确的内存地址(据我所知,这是为了以后从文件中读取数据)constru

c++ - 通过唯一的成员 ID 来标识对象是个好主意吗?

我的问题是,我应该如何将对象相互关联起来。我有两个vector,vectorbabies和vectortoys.每个宝宝和每个玩具都有一个独特的成员intid.因此所有婴儿和玩具都从0到n编号。现在,每个Baby都有一个喜欢的Toy,每个Toy都有一个喜欢的Baby。到目前为止,我使用的是指针:Baby有一个指向他喜欢的Toy的指针,而这个Toy有一个指向Baby的指针。(没关系,因为我永远不会改变vector)然而,区分婴儿和玩具的是它们的ID,而不是它们在vector中的位置。随着时间的推移,我质疑我的设计并发现指针是有效的,但它们可能会在未来导致问题。相反,如果我使用ID就没问题

c++ - to_string 不是 std 的成员,g++ (mingw)

我正在制作一个小型词汇内存程序,其中会随机闪现单词以了解含义。正如BjarneStroustroup告诉我们的那样,我想使用标准C++库,但我一开始就遇到了一个看似奇怪的问题。我想将一个long整数更改为std::string以便能够将其存储在文件中。为此,我使用了to_string()。问题是,当我用g++(版本4.7.0,如其--‍version标志中所述)编译它时,它说:PSC:\Users\Anurag\SkyDrive\College\Programs>g++-std=c++0xttd.cppttd.cpp:Infunction'intmain()':ttd.cpp:11:2

c++ - 在特定位置分配多态类成员?

我有一个包含几个类成员和一个多态成员的类:classContainer{Container::Container(){p=newDerived();}Poly*p;Aa;Bb;};我想为Container::p指向的实际多态对象分配内存,在Container::b之后连续分配,而不是通过默认的new()和因此malloc()。实现此目标的最佳方法是什么? 最佳答案 在某种程度上,细节取决于Container构造函数如何决定Poly的具体类型。据推测,这种选择可能会有所不同。否则,只需在b之后声明一个Derived成员即可。但是假设这

c++ - 使用非静态数据成员和嵌套类构造函数的类内初始化时出错

以下代码非常简单,我预计它应该可以正常编译。structA{structB{inti=0;};Bb;A(constB&_b=B()):b(_b){}};我已经使用g++版本4.7.2、4.8.1、clang++3.2和3.3测试了这段代码。除了g++4.7.2在此代码(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57770)上的段错误之外,其他经过测试的编译器给出的错误消息并没有太多解释。g++4.8.1:test.cpp:Inconstructor‘constexprA::B::B()’:test.cpp:3:12:error:constr

c++ - 构造函数和对象成员变量初始化

假设我有以下代码:structCar{public:Car(){}Car(intw,intd){wheels=w;doors=d;}private:intwheels;intdoors;};intmain(){Car*cars=newCar[10];cars[0]={4,4};cars[1]=Car(4,4);}考虑到除了使用构造函数之外,该结构不允许设置车轮和门的值,哪种方法是为汽车数组赋值的更好方法?上面代码的最后两行有什么区别吗?我目前正在为学校开发哈希表实现,所提供的c++代码的起始基础有一个键值对类,只有一个setKey方法,没有setValue方法。所以我基本上必须通过调用

c++ - 团体成员的个人身份

在doxygen配置文件中是否有任何东西可以确定一个组的成员是否可以被\ref个人引用?我希望能够将记录为一个组(而不是整个组)的类(class)成员称为普通类(class)成员。例如:///\file///Inparticular,blahblah\refSomeStruct::f1//Isthereawaytomake\ref'ssuchasaboveworkwithoutdefininganchors?///Averyusefulstruct.structSomeStruct{...///\nameThesefunctionsimplementcommonfunctionalit

c++ - 引用类型静态数据成员的问题,可能是编译器错误

我想一个类的静态数据成员可以是一个初始化为全局变量的引用类型,如下所示:#include#includeconstunsignedintglobal=0x1fee;structK{inta;staticconstint&iref;};constint&K::iref=global;intmain(){printf("%d\n",K::iref);return0;}但在我的VC++中test,它可以编译但在执行时会产生异常。这只是VC++的一个错误吗?我做错了什么吗? 最佳答案 你只需要机会constint&k::iref到k::ir

c++ - 在聚合初始化列表中的给定位置,传递到先前位置的值是否可以安全地从相应成员读取?

这个问题在这里已经有了答案:Isitdefinedbehaviortoreferenceanearlymemberfromalatermemberexpressionduringaggregateinitialization?(4个答案)关闭7年前。struct{inta,b;}s={5,s.a+1};按照标准,在上面的例子中读取“s.a”是安全的,所以s被初始化为a=5和b=6吗?如果是这样,大多数编译器都遵守这条规则吗?(以上在VC10编译。)