草庐IT

Private_dirty

全部标签

c++ - 为什么我不能从不同 namespace 中的友元类更改类的私有(private)成员?

我发现从好友类访问类的私有(private)成员时遇到问题。持有我要更改的私有(private)成员的类和进行更改的类在不同的命名空间中。friend类是在保存数据的类之后定义的,所以我尝试在命名空间外转发声明friend类。g++说我不能修改成员,因为它是私有(private)的,visualstudio好像觉得没问题。我是不是在做一些奇怪的非标准事情?为什么我不能更改成员?这是一个代表我的问题的简化片段:structS;namespaceN{classA{intm;public:A():m(5){};friendstructS;};}usingnamespaceN;structS{

c++ - 错误 C2248 : 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'

收到此错误,我很确定它在operatorvoidCRational::print()const{print(cout);}voidCRational::print(ostream&sout)const{if(m_denominator==1)cout 最佳答案 您需要通过引用而不是值返回ostream。它试图调用构造函数。也可以传递'a'作为引用:ostream&operator我还注意到打印方法可能是错误的。它有sout作为流的名称传递,但随后直接使用cout实现。应该是voidCRational::print(ostream&s

c++ - 为什么我要将复制构造函数和赋值运算符设为私有(private)并在 C++ 中实现?

灵感来自thisquestion.通常将复制构造函数和赋值运算符设为private的原因是maketheclassnon-copyable这样对象只能被创建和销毁,而不能被复制——大多数时候是因为复制它们没有意义。在这种情况下,复制构造函数和赋值运算符都被设为私有(private)并且未实现-如果该类不可复制,则任何人都不应复制。是否存在复制构造函数和赋值运算符需要私有(private)并同时具有有意义的实现的情况? 最佳答案 有两种情况会立即浮现在脑海中:friend:假设,作为您设计的一部分,您有两个高度耦合的类,其中一个需要能

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++ - 错误 `QObject` 子类和复制构造函数 : `QObject::QObject(const QObject&) is private`

以下是我遇到的编译错误:/usr/lib/qt-3.3/include/qobject.h:IncopyconstructorProduct::Product(constProduct&):/usr/lib/qt-3.3/include/qobject.h:211:error:QObject::QObject(constQObject&)isprivateProduct.h:20:error:withinthiscontextHandleTCPClient.cpp:InmemberfunctionintHandler::HandleTCPClient(int,std::string,s

VXLAN Ethernet Virtual Private Network集中式和分布式网关实验(华为设备)

实验场景1:VXLAN-EVPN集中式网关环境说明:Underlay通过OSPF互联,Overlay通过BGPEVPN建立隧道;Leaf1和Leaf2分别与Spine建立IBGP邻居关系,Spine作为路由反射器。Leaf1,Leaf2和Spine分别使用L0接口地址作为VTEP地址和BGPEVPN源地址。Leaf1的VTEP地址为1.1.1.1/32,Leaf2的VTEP地址为2.2.2.2/32,Spine的VTEP地址为3.3.3.3/32。Vlan10的子网范围为10.1.10.0/24,网关地址为10.1.10.254;Vlan20的子网范围为10.1.20.0/24,网关地址为10

android - 在 Kotlin 中测试私有(private)方法

如何在Kotlin中测试私有(private)方法?我尝试添加@VisibleForTesting(otherwise=VisibleForTesting.PRIVATE)来自androidx.annotation.VisibleForTesting但它不会使我的函数私有(private)这就是我的使用方式@VisibleForTesting(otherwise=VisibleForTesting.PRIVATE)fundoSomething(){}[编辑]我知道我不应该测试private方法,但现在它总是微不足道的。下面的情况呢。我有一个CsvReader类classCsvReade

android - 在 Kotlin 中测试私有(private)方法

如何在Kotlin中测试私有(private)方法?我尝试添加@VisibleForTesting(otherwise=VisibleForTesting.PRIVATE)来自androidx.annotation.VisibleForTesting但它不会使我的函数私有(private)这就是我的使用方式@VisibleForTesting(otherwise=VisibleForTesting.PRIVATE)fundoSomething(){}[编辑]我知道我不应该测试private方法,但现在它总是微不足道的。下面的情况呢。我有一个CsvReader类classCsvReade

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++ - 访问私有(private)变量的单元测试

我有一个单元测试类Tester;我希望它访问Working类的私有(private)字段。classWorking{//...private:intm_variable;};classTester{voidtestVariable(){Workingw;test(w.m_variable);}}我有以下选择:使m_variablepublic-丑陋制作方法test_getVariable()-过于复杂将friendclassTester添加到Working-然后Working明确“知道”Tester,这不好我的理想是classWorking{//...private:intm_vari