[英]confused about struct an class with same name
我正在查看一些c ++代码,并且遇到一个我不理解的问题。 我有多个cpp文件,其中main.cpp
具有:
#include <iostream>
#include "classtest.h"
#include "test2.h"
using namespace std;
int main() {
foo test;
test.b=5;
...
查看includes, test2.h
为空,而test2.cpp
包含以下内容:
struct foo{
int a;
};
包含的另一个头文件classtest.h
包含以下内容:
using namespace std;
class foo{
public:
int a;
int b;
};
如您所见,有一个同名的类和结构。 我的问题是:为什么在我的主要方法中键入foo
是结构而不是类? 它没有在头文件test2.h
定义,如何main
访问它? 第二个问题:给定foo
是结构体(我正在使用eclipse并看到它将鼠标光标放在其上),如何访问结构中不存在的字段b
? 抱歉,但是我在C ++中还是个新手,我需要澄清这个疑问。 谢谢。
除了#include <iostream>
,如果您手动替换#include
,则最终将其用于main.cpp
:
#include <iostream>
using namespace std;
class foo{
public:
int a;
int b;
};
using namespace std;
int main() {
foo test;
test.b=5;
因此,很明显foo
是class
。 这里根本没有任何可疑的事情。
您正在从classtest.h
而不是从test2.cpp
看到class foo
。 在C ++中,除了默认的成员访问权限外, class
和struct
之间没有区别(对于struct,
public
的struct,
for
来说是私有for
)。
这就是为什么在实例foo
有成员b
的原因。 代码编译和链接良好的原因是因为两个foo
没有同时定义。 每个翻译单元仅定义一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.