读书人

指针的初始化,该怎么处理

发布时间: 2012-08-10 12:19:33 作者: rapoo

指针的初始化
在类中这样声明
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_Hclass 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 ;
};
[解决办法]
探讨

class dian
{
public:
dian();
void check();
private:
int a[4];
struct b; 这个是dian内部的struct b,如果你是要前置声明,把这句放到class dian之前去
b *d ;
};

[解决办法]
探讨

引用:

class dian
{
public:
dian();
void check();
private:
int a[4];
struct b; 这个是dian内部的struct b,如果你是要前置声明,把这句放到class dian之前去
b *d ;
};

这里的b是一个嵌套类,而你cpp里又什么里一个一般类b,两个完全不同

[解决办法]
定义嵌套类一般是基于这样的考虑:这两个类的耦合性很高所以就嵌套的一起了 要不就把struct b定义到类外部吧
[解决办法]
在C++中struct和class关键字几乎没有差别的,唯一的差别就是struct中的字段默认是public的而class中的字段默认是private的 你用一个class的时候一定要把它定义到内部码 定义到外部是可以直接使用的因为他是全局的

读书人网 >C++

热点推荐