草庐IT

private_extern

全部标签

c++ - header 中的 private static const 成员变量与 cpp 中的 const 变量

为什么我应该在header中声明一个私有(private)的staticconst变量(并在cpp中初始化它)而不是仅仅在cpp中定义+声明它?即案例1.hclassMyClass{...private:staticconstMyTypesome_constant;}case1.cppconstMyTypeMyClass::some_constant=...;案例2.h//Nomentionofsome_constantatall案例2.cppconstMyTypesome_constant=...;假设遵循常见的c++约定(1个header和cpp仅与1个类相关联,从不与#inclu

c++ - 私有(private)函数作为其他类的 friend

我有以下用C++编写的代码:#includeusingnamespacestd;classWindow;classLevel{intlevel;intget(Window&w);public:Level(void):level(3){}voidshow(Window&w);};voidLevel::show(Window&w){cout我想访问类Window的私有(private)成员,只能通过友元函数get访问,这也是类Level的私有(private)函数.当我尝试编译时出现错误C2248。是否可以将私有(private)函数设为其他类的友元? 最佳答案

c++ - 使用 pimpl 习惯用法时如何创建私有(private)静态常量字符串

背景我一直在学习如何使用HerbSutter在本页描述的更新的c++11方法来实现pimpl习语:https://herbsutter.com/gotw/_100/我试图通过向私有(private)实现添加成员变量来修改此示例,特别是std::string(尽管char*具有相同的问题)。问题由于使用了staticconst非整数类型,这似乎是不可能的。只能对整数类型进行类内初始化,但由于它是静态的,因此也不能在构造函数中进行初始化。解决这个问题的方法是在头文件中声明私有(private)变量,并在实现中对其进行初始化,如下所示:C++staticconstantstring(clas

c++ - 为什么成员函数尝试 block 处理程序中的 lambda(捕获 'this')不能访问 VC++ 2013 中的私有(private)数据成员?

与thisquestionaboutstaticinitializers不同但可能相关.前两个函数编译良好,最后一个函数在vc++中不编译,但在clang和gcc中编译:classA{protected:std::stringprotected_member="yay";public:voidwithNormalBlock();voidwithFunctionBlock();voidnoLambda();};voidA::withNormalBlock(){try{throwstd::exception();}catch(...){[this](){std::coutinclang(好

c++ - 无法访问类中声明的私有(private)成员 'QReadWriteLock' 错误 1 ​​错误 C2248 : 'QReadWriteLock::QReadWriteLock'

这真的感觉像是Qt中的一个错误。任何人都有解决方案或我应该将其作为错误提交吗?#includeclassFileInfoWrapper{public:explicitFileInfoWrapper(constQFileInfo&_fileInfo);~FileInfoWrapper();private://alsotriedpublicmutableQReadWriteLocklock_;甚至在使用它之前,我得到了错误:Error1errorC2248:'QReadWriteLock::QReadWriteLock':cannotaccessprivatememberdeclaredi

c++ - Unresolved external 噩梦

各位业内资深人士,我是一名大三学生,开始了我的第一个暑期编程实习,而且我已经不知所措了。我工作的公司从另一家公司购买了一个巨大的应用程序,该公司自90年代初以来一直在缓慢地扩展和修改它。该解决方案包含超过200,000行代码,分布在300多个文件中。据称,整个解决方案已按照ANSI-C++标准编写。代码几乎完全没有记录,而且大部分在我看来就像象形文字。最终,我的工作是将此代码移植到嵌入式Linux。目前,我的工作只是在WindowsXP上使用VisualStudio2008进行编译。今天,我遇到了链接器错误,例如:libcmtd.lib(sprintf.obj):errorLNK200

c++ - 类中的几个 "private"声明

我正在查看一些开源代码,发现了这样一个类声明:classFoo{private://declarationsprivate://declarationsprivate://declarationspublic://declarations};除了在非常的声明列表中提醒您成员的隐私外,您是否有任何时候想要做这样的事情? 最佳答案 这对于此类场景特别有用:classSomeClass{//COnstructorsetc.public:SomeClass();SomeClass(constSomeClass&other);~SomeCla

c++ - extern C 的 undefined reference

我正在尝试使用包含Aquila的Netbeans(g++)编译程序,anopensourcelibary.我关注了theinstallationinstructions.但是当试图编译一个小的测试程序时,我得到了这个错误Infunction`Aquila::OouraFft::fft(doubleconst*)':OouraFft.cpp:(.text+0x24f):undefinedreferenceto`cdft'OouraFft.h:#include"Fft.h"extern"C"{voidcdft(int,int,double*,int*,double*);//prototyp

c++ - 外部链接和 »extern "C"« block

我有一个intID,我想在C++中定义它并使其可用于C链接(为简单起见设计的案例):/*i.h*/#ifdef__cplusplusextern"C"{#endifexternintID;#ifdef__cplusplus}#endif这是一个使用int的C和C++程序:/*m.cpp*/#include"i.h"#includeintmain(){std::coutintmain(){printf("%d\n",ID);}现在我想知道的是extern"C"和/或extern的语法。以下是可以和不能定义intID的方式:/*i.cpp*///constintID=88;//noClin

c++ - 在 C++ 中对用户定义的类型使用 extern 关键字

我想对用户定义的类型使用extern关键字。这意味着我在一个文件中声明了对象并在另一个文件中定义了它。我读过extern关键字用于声明变量而不定义它。当程序被拆分成多个源文件并且每个源文件都需要使用全局变量时,extern关键字很有用。如果我在某个地方错了,请纠正我。这是我编写的程序,但不幸的是我做错了什么或遗漏了什么,所以我遇到了编译器错误。Prog1.cpp#includeusingstd::cout;classtest{public:voidfun();};voidtest::fun(){coutProg2.cpp#includeusingstd::cout;externtest