Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。

30
未定义对vtable的引用
在构建C ++程序时,出现错误消息 未定义引用'vtable ... 这个问题是什么原因造成的?我如何解决它? 碰巧我收到以下代码的错误(所涉及的类是CGameModule。)而我一生都无法理解问题所在。起初,我认为这与忘记赋予虚拟功能一个实体有关,但是据我了解,一切都在这里。继承链有点长,但是这里是相关的源代码。我不确定应该提供什么其他信息。 注意:似乎是构造函数发生此错误的地方。 我的代码: class CGameModule : public CDasherModule { public: CGameModule(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, CDasherInterfaceBase *pInterface, ModuleID_t iID, const char *szName) : CDasherModule(pEventHandler, pSettingsStore, iID, 0, szName) { g_pLogger->Log("Inside game module constructor"); m_pInterface = pInterface; } virtual ~CGameModule() {}; std::string GetTypedTarget(); std::string GetUntypedTarget(); bool DecorateView(CDasherView …
357 c++  gcc  g++ 

17
为什么要使用指针?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我知道这是一个非常基本的问题,但是在用高级语言编写了一些项目之后,我才开始进行一些基本的C ++编程。 基本上我有三个问题: 为什么在普通变量上使用指针? 我应该在何时何地使用指针? 如何将指针与数组一起使用?
356 c++  c  pointers 

30
什么时候应该在C ++中使用“朋友”?
我一直在阅读C ++常见问题解答,并对friend声明感到好奇。我个人从未使用过它,但是我对探索这种语言很感兴趣。 使用的一个好例子是friend什么? 再读一遍FAQ,我喜欢<< >>运算符重载的想法,并添加为这些类的朋友。但是我不确定这不会破坏封装。这些例外什么时候可以保持在OOP的严格程度之内?
354 c++  oop  encapsulation  friend 

28
在现代C ++ 11 / C ++ 14 / C ++ 17和未来的C ++ 20中枚举为字符串
与所有其他类似问题相反,该问题与使用新的C ++功能有关。 2008年 C 有没有简单的方法可以将C ++枚举转换为字符串? 2008年 C 在C中将枚举类型的变量用作字符串的简单方法? 2008年 C ++ 如何轻松地将C ++枚举映射到字符串 2008年 C ++ 使某些东西既是C标识符又是字符串? 2008年 C ++ 是否有一个简单的脚本将C ++枚举转换为字符串? 2009年 C ++ 如何在C ++中将枚举用作标志? 2011年 C ++ 如何将枚举类型变量转换为字符串? 2011年 C ++ 枚举到字符串C ++ 2011年 C ++ 如何将枚举类型变量转换为字符串? 2012年 C 如何在C中将枚举名称转换为字符串 2013年 C 在C中对条件编译的枚举进行字符串化 阅读许多答案后,我尚未找到任何答案: 使用C ++ …
354 c++  string  enums  c++17  c++20 

11
解决由于类之间的循环依赖而导致的构建错误
我经常发现自己处于这样的情况下,由于一些错误的设计决策(由其他人做出的:)导致C ++项目中出现多个编译/链接器错误,这导致不同头文件中C ++类之间的循环依赖(也可能发生)在同一文件中)。但是幸运的是(?)发生的次数并不多,以至于我下次再次遇到该问题时仍记得该问题的解决方案。 因此,为了将来方便起见,我将发布一个具有代表性的问题及其解决方案。当然,更好的解决方案是受欢迎的。 A.h class B; class A { int _val; B *_b; public: A(int val) :_val(val) { } void SetB(B *b) { _b = b; _b->Print(); // COMPILER ERROR: C2027: use of undefined type 'B' } void Print() { cout<<"Type:A val="<<_val<<endl; } }; B.h #include "A.h" class B …



9
为什么不能建立参考向量?
当我这样做时: std::vector<int> hello; 一切正常。但是,当我将其设为参考向量时: std::vector<int &> hello; 我收到可怕的错误,例如 错误C2528:“指针”:指向引用的指针不合法 我想将一堆对结构的引用放到一个向量中,这样我就不必插手指针了。为什么vector对此大发脾气?我唯一的选择是使用指针向量吗?

7
我是否需要显式调用基本虚拟析构函数?
在C ++中(使用虚拟析构函数)覆盖类时,我在继承类上再次将析构函数实现为虚拟形式,但是我是否需要调用基本析构函数? 如果是这样的话,我想是这样的... MyChildClass::~MyChildClass() // virtual in header { // Call to base destructor... this->MyBaseClass::~MyBaseClass(); // Some destructing specific to MyChildClass } 我对吗?
350 c++  destructor 


6
std :: unique_lock <std :: mutex>或std :: lock_guard <std :: mutex>?
Наэтотвопросестьответына 堆栈溢出нарусском:Чем的std :: unique_lockотличаетсяот的std :: lock_guard? 我有两个用例。 答:我想通过两个线程同步对队列的访问。 B.我想同步两个线程对队列的访问并使用条件变量,因为一个线程将等待内容被另一个线程存储到队列中。 对于用例AI,请参见使用的代码示例std::lock_guard&lt;&gt;。有关用例BI,请参见使用的代码示例std::unique_lock&lt;&gt;。 两者之间有什么区别?在哪种用例中应该使用哪一种?

5
__attribute __((constructor))到底如何工作?
似乎很清楚,它应该进行设置。 它什么时候运行? 为什么有两个括号? 是__attribute__功能吗?宏?句法? 这在C中有效吗?C ++? 它使用的功能是否必须是静态的? 什么时候__attribute__((destructor))运行? Objective-C中的示例: __attribute__((constructor)) static void initialize_navigationBarImages() { navigationBarImages = [[NSMutableDictionary alloc] init]; } __attribute__((destructor)) static void destroy_navigationBarImages() { [navigationBarImages release]; }
347 c++  objective-c  c  gcc 


6
我应该在C ++中使用哪种XML解析器?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 2年前关闭。 我有需要解析的XML文档和/或需要构建XML文档并将其写入文本(文件或内存)。由于C ++标准库没有为此提供的库,我应该使用什么? 注意:这旨在作为对此的权威性C ++-FAQ式问题。是的,它是其他人的副本。我并没有简单地提出其他问题,因为它们倾向于要求一些更具体的内容。这个问题比较笼统。
344 c++  xml-parsing  c++-faq 

16
返回C ++参考变量的做法是否有害?
我认为这有点主观;我不确定这种意见是否会一致(我已经看到很多返回引用的代码段)。 根据我对这个问题的评论,关于初始化引用,返回引用可能是邪恶的,因为(据我所知),因为它更容易错过删除它,这可能导致内存泄漏。 这让我感到担心,因为我遵循了示例(除非我在想象中的事情),并且在相当多的地方进行了此操作……我是否误解了?是邪恶的吗?如果是这样,到底有多邪恶? 我觉得由于我的指针和引用混合在一起,再加上我是C ++的新手,再加上对何时使用什么的完全困惑,我的应用程序一定是内存泄漏地狱... 另外,我了解使用智能/共享指针通常被认为是避免内存泄漏的最佳方法。
341 c++  reference  c++-faq 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.