当我定义一些随机结构时,例如在Visual Studio的cpp文件中
1) struct CAddition {
int x, y;
CAddition(int a, int b) { x = a; y = b; }
int result() { return x + y; }
};
现在如果我定义一些结构对象
CAddition foo;
它没有任何错误 但如果我在最后使用任何别名
2) struct CAddition {
int x, y;
CAddition(int a, int b) { x = a; y = b; }
int result() { return x + y; }
}CAddition;
在定义
之前,我不能简单地定义任何对象而不使用struct struct CAddition foo;
或另一种方法是添加
typedef struct CAddition {
在方法2中为了避免每次都重写struct,我的问题是这两个定义之间的区别是什么,方法1不使用更少的关键字,更容易使用在什么条件下我们应该使用结构的第二个定义
答案 0 :(得分:5)
使用struct CAddition { ... } CAddition;
,您正在做两件事:
CAddition
定义为类型名称。这就是struct CAddition
所做的事情。CAddition
。变量是之后的结构。因为您定义了变量CAddition
,所以不能将该名称用于该类型,因为编译器会认为您的意思是变量而不是结构。要解决这个问题,您需要使用struct CAddition
明确告诉编译器您的结构类型名称。
在不相关的注释中:struct
就像class
一样,不同之处在于public
默认情况下所有成员struct
。因此,您不需要public
中的struct
规范。
答案 1 :(得分:0)
它没有任何错误,但如果我在最后使用任何别名
在2)你没有使用“别名”,但你创建了一个你刚刚定义的类的实例(结构和类在c ++ btw中是相同的)。然后,您有一个名称隐藏类名的实例,因此您需要struct CAddtion
告诉编译器CAddition
引用的类不是您创建的实例。