草庐IT

c++ - 在头文件中调用类名

例如,我偶然发现了一段在头文件上部调用类名的C++代码classCFoo;classCBar{....};我的问题是,classCFoo有什么用?非常感谢! 最佳答案 这称为前向声明。这意味着有一个名为CFoo的类,稍后将在文件(或另一个包含)中定义。这通常用于类中的指针成员,例如:classCFoo;classCBar{public:CFoo*object;};这是对C++编译器的一个提示,告诉它不要因为一个类型名称在没有定义的情况下被使用而panic,即使它还没有看到CFoo的完整定义。

c++ - 我应该在头文件或源文件中实现带有构造函数的结构吗?

这个问题在这里已经有了答案:StructConstructorinC++?(16个答案)Definingconstructorinheaderfilevs.implementation(.cpp)file(3个答案)关闭7年前。好吧,我正在编写一个带有结构的代码[在C++中],但我不确定是在头文件中还是在源文件中实现该结构。该结构包含一个构造函数:structPoint{doublex;doubley;Point(doublexCo,doubleyCo){this->x=xCo;this->y=yCo;}intcomparePoint(Pointpoint){...}};我在头文件中写

c++ - 在头文件中定义非内联函数时出现链接器错误?

在头文件中定义的带有保护的非内联函数#if!defined(HEADER_RANDOM_H)#defineHEADER_RANDOM_Hvoidfoo(){//something}#endif导致链接器错误:已在someother.obj文件中定义使函数内联工作正常,但我无法理解为什么函数在第一种情况下已经出错。 最佳答案 如果头文件包含在多个源文件中并且函数未标记为“内联”,您将有多个定义。包含守卫仅防止同一源文件中的多个包含。 关于c++-在头文件中定义非内联函数时出现链接器错误?,

c++ - 为什么在头文件中声明 "static const"成员会导致链接器错误?

我有一个这样的类声明(.h文件):structMyClass{staticconstuint32_tSIZE=sizeof(MyType);};将我的程序链接在一起时,出现MyClass::SIZE的链接器错误。nm确认符号未定义。http://forums.devshed.com/c-programming-42/linker-errors-undefined-reference-to-static-member-data-193010.html似乎解决了我的问题,表明“类静态对象也必须像普通全局变量一样在任何函数或类之外声明。”我有两个问题:这个解释对我的情况有效吗?如果是这样,您

c++ - '#include' 和 'using' 语句是否应该在头文件和实现文件 (C++) 中重复?

我是C++的新手,但我的理解是#include语句基本上只是将#included文件的内容转储到该语句的位置。这意味着如果我的头文件中有许多'#include'和'using'语句,我的实现文件可以只#include头文件,如果我不重复其他语句,编译器就不会介意.但是人呢?我主要担心的是,如果我不重复“#include”、“using”和“typedef”(现在我想到了)语句,它会从它所在的文件中获取该信息使用,这可能会导致混淆。目前我只是在处理小型项目,它不会真正造成任何问题,但我可以想象,在有更多人参与的大型项目中,它可能会成为一个重大问题。例子如下:更新:我的“Unit”函数原型

c++ - 在头文件中声明类对象

我似乎陷入了一个基本问题,但我无法在任何地方找到解决方案。任何人,都会继续解释。我有一个包含三个文件的程序;main.ccp,add.h,add.cpp.我在add.h中声明类“SA”,并在add.cpp中定义我的所有函数。附加.hclassSA{...publicintx;}Obj1,Obj2;主.ccp#include"additional.h"intmain(){Obj1.x=5;...}编译时出现链接错误:errorLNK2005:"classSAObj1"(?Obj1@@3VSA@@A)已经在main.obj中定义对象的唯一定义出现在add.h中,没有其他地方。如果我在mai

c++ - #ifndef FILENAME....#endif 在头文件中的用途

我知道它是为了防止多次包含头文件。但是假设我确保只将此文件包含在一个.cpp文件中一次。是否还有我需要这种保护措施的情况? 最佳答案 不,这是include守卫的唯一目的,但使用它们应该是一个明智的选择:这样做需要很少的时间并且可能节省很多。 关于c++-#ifndefFILENAME....#endif在头文件中的用途,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/219818

ios - Xcode4 - 在头文件中声明一个对象

例如,我在接口(interface)大括号{}中声明了一个对象,如下所示:@interfacetestViewController:UIViewController{IBOutletUILabel*myLabel;}@property(retain,nonatomic)UILabel*myLabel;@end和示例二,我在接口(interface)大括号{}之外声明了一个对象,例如:@interfacetestViewController:UIViewController{}@property(retain,nonatomic)IBOutletUILabel*myLabel;@end我

c++ - C++派生类是否必须在头文件中包含继承函数/成员的定义?

标题几乎说明了一切-派生类是否必须在头文件中重新包含从父类继承的函数/数据成员的定义?是否可以从继承语句中隐含继承的函数/成员?是否应该明确地重新声明它们以提高可读性,或者这可能会隐藏风险?我不确定我应该在派生类的头文件中做什么。 最佳答案 DoesC++derivedclasseverhavetoincludedefinitionsofinheritedfunctions/membersinheaderfile?从字面上看:不需要-在C++中,任何非模板函数的定义-无论继承或类成员身份-永远不需要出现在header中。类仅定义静态

c++ - 为什么在头文件中定义类不会出现多重定义错误?

我不确定我问的问题是否正确,但让我解释一下。首先,我阅读了这篇解释声明和定义之间区别的文章:http://www.cprogramming.com/declare_vs_define.html其次,我从之前的研究中了解到,在头文件中定义变量和函数是一种不好的做法,因为在链接阶段,您可能对同一个名称有多个定义,这会引发错误。但是,为什么类不会发生这种情况?根据另一个SO答案(Whatisthedifferencebetweenadefinitionandadeclaration?),以下将是一个类定义:classMyClass{private:public:};如果上面的定义在一个头文件