草庐IT

private_class_greeter

全部标签

c++ - g++ 4.9.3 提示 friended ctor 对 .emplace_back() 是私有(private)的,但喜欢 .push_back()

我肯定遗漏了关于emplace()和friend的其中一个优点。这是一个完整的最小示例,它重现了g++4.9.3的问题:classFoo{public:classBar{private:friendclassFoo;Bar(Foo&foo):foo(foo){}Foo&foo;};Bar&getBar(){//bars.push_back(*this);//worksfinebars.emplace_back(*this);//Foo::Bar::Bar(Foo&)isprivatereturnbars.back();}private:std::vectorbars;};

c++ - 在 C++ Win32 应用程序中,我如何确定私有(private)字节、工作集和虚拟大小

这个问题在这里已经有了答案:Whatisthewin32APIfunctionforprivatebytes?(3个答案)关闭7年前。我正在为教育目的编写一些代码,我希望能够从用C++编写的Windows控制台程序中打印出这些内存使用值。

c++ - 为什么 Visual C++ 6 提示私有(private)析构函数

以下代码适用于VisualC++2008。但是,当涉及到VisualC++6时,出现以下错误。我可以知道为什么,以及如何修复错误,但仍然使析构函数保持私有(private)。classX{public:staticX&instance(){staticXdatabase;returndatabase;}private:X(){}//Privateconstructor~X(){}//PrivatedestructorX(constX&);//Preventcopy-constructionX&operator=(constX&);//Preventassignment};intmain

c++ - 列表初始化不能用于私有(private)成员吗?

structA{private:inta,b,c;};intmain(){Aa1{};Aa2={};return0;}代码由VC++2012编译(最新更新为“2012年11月CTP”)。我希望a1和a2是零初始化的,但不是。a1和a2没有初始化。为什么? 最佳答案 你是说微软的社区技术预览编译器,他们甚至没有足够的信心将其称为beta,其中有bug?;)这是一个错误;它应该像你期望的那样运行。请照原样报告。 关于c++-列表初始化不能用于私有(private)成员吗?,我们在StackO

c++ - 我如何理解fdump-class-hierarchy输出

我正在使用fdump-class-hierarchy编译器选项,但我不知道如何理解输出。“大小”,“对齐”,“基本大小”和“基本对齐”是什么意思,它们是如何计数的?谢谢!当代码是:classA{public:private:doublem_nothing;intm_number;};输出为:ClassAsize=16align=8basesize=16basealign=8A(0x406c690)0但是,如果我稍微改变一下类(class):classA{public:private:intm_number;doublem_nothing;};输出将是:ClassAsize=16alig

c++ - 允许访问私有(private)成员

这个问题在某种程度上是thisone的延续我已经发布了。我想做的:我的意思是允许访问基类的私有(private)成员A在派生类中B,具有以下限制:我想访问的是一个结构--std::map,实际上——,不是一种方法;我不能修改基类;基类A没有模板化的方法,我可以作为后门替代方案重载——我不会添加这样的方法,因为它会反对第二个约束。作为一个可能的解决方案,有人指出我是litb的解决方案(post/blog),但是,对于我来说,我一直无法理解这些帖子中所做的事情,因此,我无法得出解决问题的方法。我正在尝试做的事情:以下代码来自litb的解决方案,提供了一种如何从类/结构访问私有(privat

c++ - 这有可能继承私有(private)类但使成员公开吗?

我想让成员继承私有(private)。我想我看到了一个将它们公开的例子,尽管如此,这个事实是用private关键字派生的。我的问题:如何去做,如果可能的话,难道不应该禁止吗?classU{public:inta;protected:intb;private:intc;};classV:privateU{public:inti;//canmakeapublicagain?}; 最佳答案 您不能将c公开,因为它对U是私有(private)的,并且不能从V访问(此外,这样的设计会require这可能是有缺陷的,因为它会违反封装-一个类不应

C++ : Initializing base class constant static variable with different value in derived class?

我有一个带有常量静态变量a的基类A。我需要类B的实例对静态变量a具有不同的值。这怎么能实现,最好是静态初始化?classA{public:staticconstinta;};constintA::a=1;classB:publicA{//???//Howtoset*a*toavaluespecifictoinstancesofclassB?}; 最佳答案 你不能。所有派生类共享一个静态变量实例。 关于C++:Initializingbaseclassconstantstaticvaria

c++ - 继承 : expected class-name before ‘{’ token

我试图在C++中创建一个异常类,但它不起作用。我已将代码减少到最少,但仍然找不到错误。这是我的头文件:#ifndefLISTEXCEPTION_H#defineLISTEXCEPTION_H//C++standardlibraries#include/*CLASSDEFINITION*/classListException:publicexception{};#endif//LISTEXCEPTION_H这是我得到的错误:error:expectedclass-namebefore‘{’token这是出乎意料的。我该如何解决这个问题? 最佳答案

c++ - 在公共(public)成员函数中返回私有(private) unique_ptr

考虑以下类原型(prototype):classObjHandler{std::unique_ptrGetPtr(){returnobj;}private:std::unique_ptrobj;};这会生成一个编译时错误,说明std::unique_ptr的复制构造函数已被删除。为什么这里不应用移动语义?是否与GetPtr()不拥有obj指针有关?我应该如何实现我的代码(我需要一个成员函数以最小的开销返回一个指向流的拥有指针)? 最佳答案 unique实际上意味着“独特的所有权”。创建所有权的拷贝是没有意义的,因为那样它就不再是唯一