草庐IT

lldb_private

全部标签

c++ - 如何在不创建 "friend"的情况下访问类外的私有(private)数据成员?

这个问题在这里已经有了答案:CanIaccessprivatemembersfromoutsidetheclasswithoutusingfriends?(27个回答)关闭5年前。我有一个classA,如下所述:-classA{intiData;};我既不想创建成员函数,也不想继承上面的classA,也不想改变iData的说明符。我的疑惑:-如何访问一个对象的iData,比如obj1,它是classA的一个实例?如何改变或操作对象obj1的iData?注意:不要使用friend。 最佳答案 这是一种方法,但不推荐classWeak{

c++ - 静态方法可以访问同一类的私有(private)方法吗?

由于单例/命名构造函数,我有这个问题。在这两种情况下,真正的构造函数都是protected或私有(private)的,两者都不能从外部访问。例如,一个简短的命名构造函数是这样的:classA{public:staticAcreateA(){returnA(0);}//namedconstructorprivate:A(intx);};intmain(void){Aa=A::createA();}我认为静态方法只能访问静态数据成员,或者通过现有对象访问私有(private)数据/方法。但是,在上面的代码中,私有(private)构造函数A()不是静态的,在调用它的时候,也不存在任何对象。

c++ - 从模板类赋值运算符访问私有(private)成员变量

我有一个模板化的容器类。我正在重载赋值运算符,以便也可以分配派生类型。我的问题是,当类型不同时,我无法访问容器类的私有(private)成员。获得访问权限的最佳方法是什么?成员变量不能通过公共(public)getter访问。谢谢!示例代码://Note:varisprivatetemplateContainer&Container::operator=(constContainer&rhs){if(*this!=rhs)var=rhs.var;//worksforsametypereturn*this;}templatetemplateContainer&Container::ope

c++ - 使用模板技巧访问私有(private)成员

来自博客文章Accesstoprivatemembers:Safernastiness由JohannesSchaub-litb:templatestructRob{friendtypenameTag::typeget(Tag){returnM;}};//usestructA{A(inta):a(a){}private:inta;};//tagusedtoaccessA::astructA_f{typedefintA::*type;friendtypeget(A_f);};templatestructRob;intmain(){Aa(42);std::cout如何get函数可以从a调用对

c++ - 私有(private)继承VS组合: when to use which?

私有(private)继承VS组合。我有点困惑何时使用它们。由于私有(private)继承在某种程度上密封了继承链,给定:classA{private:intz;protected:inty;public:intx;};classB:privateA{/*B'sdatamembersandmethods*//*BhasaccessonlytoA'spublicandprotected*/};classC:publicB{/*canaccessnofieldsofB*/};C将无法使用B的任何字段。什么时候使用私有(private)继承,什么时候使用组合?谢谢!

c++ - 在 C++ 中调用私有(private)方法

这纯粹是一个理论问题,我知道如果有人将方法声明为私有(private),您可能不应该调用它。我设法调用私有(private)虚拟方法并更改实例的私有(private)成员,但我不知道如何调用私有(private)非虚拟方法(不使用__asm)。有没有办法获得指向方法的指针?还有其他方法吗?编辑:我不想更改类定义!我只想要一个黑客/解决方法。:) 最佳答案 见myblogpost.我在这里重新发布代码templatestructresult{/*exportit...*/typedeftypenameTag::typetype;sta

c++ - 无法将 "derived"转换为其私有(private)基类 "base"

这个问题在这里已经有了答案:CanIcastaderivedclasstoaprivatebaseclass,usingC-stylecast?(3个回答)关闭7年前。我在尝试创建一个继承自定义纯虚函数的类的类的对象时遇到错误。我不确定出了什么问题。我知道我需要重写派生类中的纯虚函数,但它不起作用。我只想重写ProduceItem类中的函数,而不是Celery类,因为我希望Celery类从ProduceItem继承重写的方法。在主要:GroceryItem*cel=newCelery(1.5);//Cannotcast'Celery'toitsprivatebaseclassGroce

c++ - vector::emplace_back 用于具有私有(private)构造函数的对象

我希望仅通过Timer::create()创建我的Timer对象。为此,我将构造函数设为私有(private)。但是,在new_allocator.h的上下文中,我收到一个编译器错误,指出“Timer::Timer(unsignedint)'是私有(private)的”。我该如何解决这个问题?classTimer{private:inttimeLeft;Timer(unsignedintms):timeLeft(ms){}public:staticstd::vectorinstances;staticvoidcreate(unsignedintms){instances.emplace

c++ - 私有(private) typedef 的公共(public)使用是否可移植?

classSettings{private:typedefstd::mapOptionMap;public:typedefOptionMap::iteratoriterator;typedefOptionMap::const_iteratorconst_iterator;...};此代码可移植吗?关于它的标准规定是什么? 最佳答案 这是合法的,并且Settings::iterator和Settings::const_iterator可供Settings类的所有用户访问。C++中的访问控制纯粹应用于名称。ISO/IEC14882:20

c++ - 为什么我不能在 friend 类中实例化一个构造函数是私有(private)的类?

我有两个类;Salary用于保存有关员工薪水的信息和计算,Employee具有classSalary类型的对象和一些成员,例如员工的姓名和地址...我想要做的是防止classSalary被实例化,除了classEmployee。所以我将Salary的构造函数声明为私有(private),并使Employee成为Salary的friend。但我得到错误:classEmployee;classSalary{public:private:Salary():revenue_{},cost_{}{}Salary(intx,inty):revenue_{x},cost_{y}{}intrevenu