您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 怎么在头文件定义的类中,调用源文件的结构体。

怎么在头文件定义的类中,调用源文件的结构体。

来源:网络整理     时间:2016/8/27 6:45:13     关键词:

关于网友提出的“ 怎么在头文件定义的类中,调用源文件的结构体。”问题疑问,本网通过在网上对“ 怎么在头文件定义的类中,调用源文件的结构体。”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 怎么在头文件定义的类中,调用源文件的结构体。
描述:

我现在有一个A类,有A.h和A.cpp。
在A.h中定义了A类。
在A.cpp定义了结构体B。
因为不想把结构体B暴露出来,同时在A类中又需要用结构体B(定义了一个B类型的私有成员变量)。
现在,怎么在A类中,定义结构体B。


解决方案1:

引用 5 楼 lq5672 的回复:
Quote: 引用 3 楼 a30037338 的回复:

把B类的声明和定义都放到A类中去。。

是A类和B结构体,不是B类

一个意思啊
class A
{
     struct B { ... };
privatle:
     B b;
}; 解决方案2:

你在A.cpp中定义结构体B,那你在A.h中就只能用B的指针(B *m_b),而且也得先声明B,如8楼所说,不能这么用B  m_b,因为在头文件中没有定义B,所以它的内存大小没法计算,从而导致编译失败。如果你连在A.h中都不想声明B的话,那就只能用void *m_b了,在A的构造函数中m_b = new B,但在A.cpp中用到m_b的地方都强制转换成B的指针才能来用。

解决方案3:

引用 9 楼 lq5672 的回复:
再阐述一下:
现在,我是在A.h中定义类A和结构体B。使用神马的都没问题。
拔特,我想在A.cpp里定义结构体,这时A类定义B类型的私有成员变量就会出现问题了。现求教该问题怎么解。

A.h
声明stuct B;
然后class A{....; B* m_b;};
A.cpp
实现定义struct B{...}//struct B{...}可以放入B.h, 然后A.cpp包含B.h
然后实现A的函数,
解决方案4:

知道pimpl吗?这个就是这样的。
class A{
private:
struct  B;
B* pmpl;
};
然后就是cpp


以上介绍了“ 怎么在头文件定义的类中,调用源文件的结构体。”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3626933.html

相关图片

相关文章