草庐IT

private-key

全部标签

c++ - 单元测试资源管理类中的私有(private)方法 (C++)

我之前用另一个名字问过这个问题,但因为我没有很好地解释它而删除了它。假设我有一个管理文件的类。假设此类将文件视为具有特定文件格式,并包含对该文件执行操作的方法:classFoo{std::wstringfileName_;public:Foo(conststd::wstring&fileName):fileName_(fileName){//ConstructaFoohere.};intgetChecksum(){//Openthefileandreadsomepartofit//Longmethodtofigureoutwhatchecksumitis.//Returnthechec

c++ - Win32 API : How to catch escape key in Edit control?

我发现由于某些未知原因,当焦点位于编辑控件时,Escape键永远不会产生消息。下面是创建父窗口和其上方的编辑控件的代码。在MyCallBckProcedure()中,我将printf()放在*WM_COMMAND*下,以捕获由Edit生成的消息。不仅如此——我什至尝试打印在MyCallBckProcedure()中捕获的所有消息;但如果专注于Edit,转义键永远不会产生任何消息。这里可能有什么奇怪的问题?#include#include#include#defineIDC_MAIN_EDIT101LRESULT__stdcallMyCallBckProcedure(HWNDwindow

c++ - 你为什么要将 operator `new` 设为私有(private)?

我正在使用OpenSpliceDDS,并且在那里,几乎所有C++类(我使用的基本类,如果重要的话我可以提及它们)都重载了new运算符以使其成为私有(private)的(以防止用户使用它们)。我不明白,为什么会有人这样做?有人可以提供一些例子来说明这样做的必要性吗?为什么我需要new:因为大多数这些类没有默认构造函数,我需要在稍后的实现中通过unique_ptr初始化它们。简单的技巧:另一方面......我可以很容易地欺骗这个!我可以用另一个类包装这个类,然后使用new所有我想要的,对吧?因此,我不明白动机,感觉风格很差。有人可以解释一下吗?编辑:澄清一下:提供一个无法转义的好例子是一个

c++ - 修改 std::map 的 key

有没有办法修改std::map或的键?Thisexample展示了如何通过重新平衡树来做到这一点。但是,如果我提供一些不需要重新平衡key的保证呢?#include#include#includeclassKeymap{private:intkey;//thiskeywillbeusedfortheindexinginttotal;public:Keymap(intkey):key(key),total(0){}booloperatormy_index;intmain(){std::mapmy_index;Keymapk(2);my_index.insert(std::make_pai

c++ - 私有(private)方法作为尾随返回类型 (decltype)

当我尝试在私有(private)方法函数上使用decltype()时,我得到了私有(private)方法error:'m1'hasnotbeendeclaredinthisscope#includeclassC{public:C()=default;~C()=default;automasterMethod(intopMode)->decltype(m1()){switch(opMode){case1:returnm1();break;case2:returnm2();break;default:returnm1();break;}}private:intm1(){return1;}i

c++ - 翻译单位可以私有(private)类(class)吗?

考虑以下代码:/**myclass.h*/classmyclass_impl{//...}boost::shared_ptrmyclass;我能否以某种方式使myclass_impl(或至少直接使用它)对定义它的翻译单元私有(private),从而允许客户仅使用myclass类型定义?我想要实现的是让编译器在有人直接使用实现类时提醒我。 最佳答案 在源文件(不是头文件)中声明您的类,其他翻译单元将无法访问它。然后,使用前向声明在头文件中声明指针/引用。或者定义一个impl头文件,并注释掉它不应该包含在其他源文件中。/**myclas

c++ - 无法使 C++ 中的私有(private)方法返回指向私有(private)嵌套类的指针

这个不想编译:classMainClass{public:...private:classNestedClass{//Line39...};classNestedClass*getNestedClassFor(inti);};编译器说:error:'classMainClass::NestedClass'isprivate但是,如果我将NestedClass设置为public,它就会起作用。为什么不起作用?这不是好像我正在通过公共(public)方法导出嵌套类吗?它只是一个私有(private)方法,返回一个指向私有(private)类的指针。有什么想法吗?谢谢!更新修复了半列。他们不

涉及私有(private)继承的 C++ 编译器错误

有人可以向我解释以下编译器错误吗:structB{};templatestructA:privateT{};structC:publicA{C(A);//ERRORHERE};指定行的错误是:test.cpp:2:1:error:'structBB::B'isinaccessibletest.cpp:12:7:error:withinthiscontext究竟什么是不可访问的,为什么? 最佳答案 尝试A或A.内部C,对B的不合格引用将获取所谓的injected-class-name,它是通过基类引入的A.自A私有(private)继

c++ - std::map::find 性能是否取决于 key 大小?

假设我有以下map定义:std::map其中key是Storage类实例的字符串表示。我的问题是,即使它说map::find复杂性大小是对数,string大小对性能有影响吗?我之所以有这个map是为了能够快速访问Storage类实例。但是,如果Storage类的字符串表示很长怎么办?是否存在最大字符串大小,如果超过该大小,则map的使用变得多余?注意事项我的直觉告诉我,如果Storage类的字符串表示很长,那么使用operator==比较类本身将是也很贵。所以无论字符串有多长,我都最好使用map 最佳答案 是的,map必须对键进行小

c++ - 初始化类的私有(private)成员变量

我提前道歉,因为我的一些措辞可能不是100%正确。我要上这样一个类:classClassName{private:AnotherClassclass2;public:ClassName();~ClassName();...在这个类的构造函数中,除其他外,我放了一行ClassName::ClassName(){AnotherClassclass2;}这就是我认为您应该在C++中初始化对象的方式,但是我注意到(通过GDB)正在创建两个AnotherClass对象。一次在构造函数定义上,然后再次在我的初始化行上。这背后的原因是什么?如果我想使用一个更复杂的构造函数,比如AnotherClas