草庐IT

private_extern

全部标签

c++ - 我无法理解这一行 - 取消引用私有(private)成员变量的地址或什么?

我刚才问了一个问题aboutaccessingtheunderlyingcontainerofSTLadapters.我得到了一个非常有帮助的答案:templateS&Container(priority_queue&q){structHackedQueue:privatepriority_queue{staticS&Container(priority_queue&q){returnq.*&HackedQueue::c;}};returnHackedQueue::Container(q);}intmain(){priority_queuepq;vector&tasks=Contain

c++ - 如何从 shared_ptr 调用私有(private)析构函数?

我有一个resource_manager维护std::vector>的类在内部。resource_manager是resource的好友类.我要resources只能由resource_manager创建/删除,所以我将其构造函数设为私有(private)(可以正常工作)。但是,如果我将析构函数设为私有(private),则代码不会编译,因为析构函数由boost::shared_ptr调用,这不是resource的friend.我正在考虑通过只返回constresource*来强制执行“不要被客户删除”规则来自resource_manager,但不知何故我对这种方法提供的安全性不满意(

c++ - 将私有(private)部分保留在 c++ header 之外 : pure virtual base class vs pimpl

我最近从Java和Ruby切换回C++,令我惊讶的是,当我更改私有(private)方法的方法签名时,我不得不重新编译使用公共(public)接口(interface)的文件,因为私有(private)部分也在.h中文件。我很快想出了一个解决方案,我想这对Java程序员来说是典型的:接口(interface)(=纯虚拟基类)。例如:香蕉树.h:classBanana;classBananaTree{public:virtualBanana*getBanana(std::stringconst&name)=0;staticBananaTree*create(std::stringcons

C++ LNK1120 和 LNK2019 错误 : "unresolved external symbol WinMain@16"

我正在尝试做Deitel书中的另一个练习。该程序计算每个储户的每月利息并打印新余额。由于练习是与动态内存相关的章节的一部分,因此我使用“新建”和“删除”运算符。出于某种原因,我得到了这两个错误:LNK2019:unresolvedexternalsymbolWinMain@16referencedinfunction___tmainCRTStartupfatalerrorLNK1120:1unresolvedexternals这是类的头文件。//SavingsAccount.h//HeaderfileforclassSavingsAccountclassSavingsAccount{p

c++ - 如何为 STL 类容器提供公共(public) const 迭代器和私有(private)非 const 迭代器?

我有一个包含std::list的类,我希望为const_iterator提供publicbegin()和end(),为普通迭代器提供privatebegin()和end()。但是,编译器看到私有(private)版本并提示它是私有(private)的,而不是使用公共(public)const版本。我知道C++不会重载返回类型(在本例中为const_iterator和迭代器),因此它选择了非常量版本,因为我的对象不是const。如果没有在调用begin()之前将我的对象转换为const或者没有重载名称begin是否有办法实现这一点?我认为这是一个已知的模式,人们以前已经解决过,并且想效仿

C++ 不断收到错误 LNK2019 : unresolved external symbol

这个问题在这里已经有了答案:Whycantemplatesonlybeimplementedintheheaderfile?(17个答案)关闭8年前。我试着用谷歌搜索这个,但总是遇到不同的问题。当我尝试编译这个程序时,我得到了3个Unresolvedexternal问题:1>main.obj:errorLNK2019:unresolvedexternalsymbol"public:__thiscallDynIntStack::~DynIntStack(void)"(??1?$DynIntStack@D@@QAE@XZ)referencedinfunction_main1>main.ob

c++ - 错误 LNK2019 : Unresolved External Symbol in Visual Studio

这个问题在这里已经有了答案:Whatisanundefinedreference/unresolvedexternalsymbolerrorandhowdoIfixit?(38个答案)关闭8年前。我从SBIG网站下载了这个C++代码,以控制(拍照并保存)我从他们那里购买的相机(型号ST-401ME)。我有一个需要调用它的Matlab程序,所以我试图(使用VisualStudio)将这段代码及其header和库编译成可执行文件。但是,当我尝试时出现上述错误。请注意,我已将包含库的文件添加到目录路径中。输出的确切措辞是这样的:1>------Buildstarted:Project:Cap

c++ - 需要在 Singleton 类中私有(private)化赋值运算符

有人可以证明在Singleton类实现中私有(private)化赋值运算符的必要性吗?将Singleton&operator=(Singletonconst&);私有(private)化解决了什么问题?classSingleton{public:staticSingleton&Instance(){staticSingletontheSingleton;returntheSingleton;}private:Singleton();//ctorhiddenSingleton(Singletonconst&);//copyctorhiddenSingleton&operator=(Sin

c++ - 是否需要私有(private)静态方法?

ThePrincipleEngineer在我上一家公司有一条规则,privatestatic方法应该作为实现文件中的函数来实现,而不是类方法。我不记得他的规则是否有任何异常(exception)。我在目前的工作中偶然发现了这样做的动机:如果相关函数的参数或返回类型是需要在header中包含定义文件的对象,这可能会造成不必要的困难。em>这足以让我不再使用privatestatic方法,但在我注销它们之前我想知道是否有人知道他们的利基市场填写一个实现文件函数不会?编辑:此处的示例可能会有所帮助。假设这是classFoo声明的开始,它还有其他方法将在实现文件中调用voidfoo():cla

c++ - 将静态私有(private)映射初始化为空

我有一个staticmap是一个private数据成员。如何在实现文件中对其进行初始化,使其初始容器为空?它不是const。开始时此容器中没有任何内容,这一点很重要。 最佳答案 标题:classXXX{private:staticstd::mapthe_map;//declaresstaticmember//...执行文件:std::mapXXX::the_map;//definesstaticmember这会将映射的构造函数调用插入到程序初始化代码中(并在清理中插入析构函数)。不过要小心-不同翻译单元之间的静态构造函数的顺序是未定