草庐IT

private_extern

全部标签

c++ - 我可以将复制构造函数设为私有(private)并仍然使用默认实现吗

我认为这是不可能的,但我不妨问一下。我可以声明私有(private)Copy-Constructor并仍然使用默认实现吗?背景:我有一个包含非常大vector的类,除了一个成员函数外,我不想调用复制构造函数。使用标准的公共(public)复制器可能很容易导致错误,例如忘记迭代中的引用(foreach(Typeel,vectOfBigObjects)而不是foreach(Typeconst&el,vectOfBigObjects))。因此,我想保留标准的复制构造函数,但只是将其设为私有(private)。这是否可以在不重写copy-ctors定义的情况下实现?

c++ - 如何停止有关未使用的私有(private)字段的警告?

在Qt项目中编译一组文件时,我看到了很多与此类似的警告。Infileincludedfrom/usr/local/Trolltech/Qt-4.8.6/include/QtGui/qevent.h:52:/usr/local/Trolltech/Qt-4.8.6/include/QtGui/qmime.h:119:10:warning:privatefield'type'isnotused[-Wunused-private-field]chartype;^根据各种搜索的建议,我确实添加了条目QMAKE_CXXFLAGS+=-Wno-unused-private-field到.pro文件

c++ - Qt 5.4 静态构建在 Visual Studio 2013 中产生 "unresolved external symbol"链接错误

我想使用Qt5.4的静态构建。由于没有可用的预编译静态构建,您必须自己从Qt源代码构建一个。我的环境如下:Windows7x64VisualStudio2013终极更新4Qt5VisualStudio插件1.2.4已安装ActivePerl/ActivePython(需要构建Qt源代码)我的程序如下(参见QtDocumentation>Qt5.4>QtforWindows-BuildingfromSource):下载qt-everywhere-opensource-src-5.4.0.zip解压缩到一个临时文件夹按照here所述打开命令提示符(基本上,这类似于打开“VisualStud

c++ - extern 和 extern "C"用于变量

我正在编写供C程序使用的C++共享库。但是,我对extern和extern"C"有疑问。考虑以下代码我的头文件是这样的:#ifdef__cplusplusextern"C"intglobal;extern"C"intaddnumbers(inta,intb);#elseexternintglobal;#endif这很好用;我只需要声明intglobal;在我的.cpp或我的.c文件中。但是,我不明白的是:extern"C"和extern有什么区别?我尝试注释掉extern"C"intglobal并且有效!为什么?我知道extern"C"用于建立C链接。这就是为什么我有extern"C"

具有私有(private)复制构造函数的类的 C++ STL vector ?

我们的代码中有一个类,比如类C.我想创建一个C类对象的vector.但是,复制构造函数和赋值运算符都被特意声明为private。.我不想(也许不允许)改变它。是否有任何其他干净的方法来使用/定义vector? 最佳答案 你可以使用vector或vector>相反。 关于具有私有(private)复制构造函数的类的C++STLvector?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questio

c++ - 如何让一个类只能访问另一个类的某些私有(private)成员?

假设我们有两个类:classBase{private:intx;public:voidf();};classFoo{//somevariablesandmethods};现在每个人都可以调用Base::f(),但我只希望Foo能够调用。为了达到这个效果,我们可以将Base::f()设为私有(private),并将Foo声明为友元:classBase{private:intx;voidf();friendFoo;};这种方法的问题在于Foo可以访问Base::f()和Base::x(并且甚至是Base的任何其他私有(private)成员)。但我希望Foo只能访问Base::f()。有没有

c++ - Unresolved external symbol 错误仅发生在 64 位模式中,而不是在 32 位构建中

我有一个VC++代码(使用VS2008构建),它使用了一些静态库(*.lib文件在编译时静态链接)。为了便于理解,我们将我的EXE代码称为“AAA.EXE”并将lib文件称为“A.lib”、b.lib等...AAA.EXE代码和静态库代码都是使用VS2008构建的。我看到我的“AAA.EXE”在32位版本中运行良好,并且在以64位模式构建AAA.EXE时显示以下链接器错误。当然,我已经在64位模式下重建了静态库,并在我的AAA.EXE中提供了lib路径,如下所示:::“对应于AAA.EXE的项目配置属性->链接器->常规/输入”。这个链接器错误真的困扰了我很长时间。任何帮助是极大的赞赏

c++ - 在 C++ 中将命名空间设为私有(private)

考虑这种情况。我正在编写一个库并希望将我的数据包装在一个命名空间中。例如://header.h#pragmaoncenamespacewrapper{//someinterfacefunctionshere..}我想将我的命名空间设为私有(private)。这样就没有人可以在里面写任何东西。例如,我们总是可以这样写。namespacestd{//somedatahere..}所以我想防止最后一种情况。除了使用包装在类中的静态函数之外,还有什么技术可以做到这一点吗? 最佳答案 不,没有。命名空间总是可以被添加到,除非它是一个匿名命名空

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控制台程序中打印出这些内存使用值。