指针的初始化,该怎么处理
指针的初始化
在类中这样声明
struct b;
b *d ;
在构造函数中这样初始化
struct b
{
int signa,signb,signc;
int c[5];
b()
{
for(int i = 0; i < 5;i++)
c[i] = i + 1;
}
};
d = new b[64];//这里出了问题 说a value of type " b*"cannnot assigned to an entity of type "dian::b*"这是为什么 (dian是类名字)
------解决方案--------------------
楼主可否把你完整的代码贴出来?另外贴代码要贴在【code=C/C++】和【/code】之间。看看回复框上面的插入源代码里就有。
------解决方案--------------------
dian::b* 这个确实奇怪,struct属于这个dian类?
------解决方案--------------------
命名空间的问题
试试
d = new dian::b[64];
------解决方案--------------------
struct b是嵌套在class dian中那,还是在class dian外部,如果在内部d 就dian::b*如果在外部就是b*
你代码贴的不清楚 是不是应该把代码声明到dian外那?
------解决方案--------------------
代码好乱呀是不是想这样呀
在类中这样声明
struct b;
b *d ;
在构造函数中这样初始化
struct b
{
int signa,signb,signc;
int c[5];
b()
{
for(int i = 0; i < 5;i++)
c[i] = i + 1;
}
};
d = new b[64];//这里出了问题 说a value of type " b*"cannnot assigned to an entity of type "dian::b*"这是为什么 (dian是类名字)
------解决方案--------------------
楼主可否把你完整的代码贴出来?另外贴代码要贴在【code=C/C++】和【/code】之间。看看回复框上面的插入源代码里就有。
------解决方案--------------------
dian::b* 这个确实奇怪,struct属于这个dian类?
------解决方案--------------------
命名空间的问题
试试
d = new dian::b[64];
------解决方案--------------------
struct b是嵌套在class dian中那,还是在class dian外部,如果在内部d 就dian::b*如果在外部就是b*
你代码贴的不清楚 是不是应该把代码声明到dian外那?
------解决方案--------------------
代码好乱呀是不是想这样呀
- C/C++ code
#ifndef DIAN_H #define DIAN_H class dian { public: dian(); void check(); private: int a[4]; struct b { int signa,signb,signc; int c[5]; b() { for(int i = 0; i < 5;i++) c[i] = i + 1; } }; b *d ; }; #endif
------解决方案--------------------
class dian
{
public:
dian();
void check();
private:
int a[4];
struct b; 这个是dian内部的struct b,如果你是要前置声明,把这句放到class dian之前去
b *d ;
};
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
定义嵌套类一般是基于这样的考虑:这两个类的耦合性很高所以就嵌套的一起了 要不就把struct b定义到类外部吧
------解决方案--------------------
在C++中struct和class关键字几乎没有差别的,唯一的差别就是struct中的字段默认是public的而class中的字段默认是private的 你用一个class的时候一定要把它定义到内部码 定义到外部是可以直接使用的因为他是全局的