类中结构体的问题。。。。

lq651659889 2009-02-20 12:26:55

#include<iostream>
using namespace std;
typedef struct Sqlist
{
int code[100];
int len;
}Node;
void Innode (Node &A,int i)
{
int b=0;
for( ;b<i;b++)
{
cin>>A.code[b];
A.len++;
}
}
int main(void)
{
Node node;
node.len=0;
int a;
cin>>a;
cout<<"输入"<<a<<"个数"<<endl;
Innode (node,a);
for(a=0;a<node.len;a++)
cout<<node.code[a]<<" ";
cout<<endl;
cout<<node.len<<endl;
for(int b=node.len;b>0;b--)
cout<<node.code[b-1]<<" ";
cout<<endl;
return 0;
}


#include<iostream>
using namespace std;
class B{
typedef struct Sqlist
{
int code[100];
int len;
}Node;
public:
void Innode (Node &A,int i);
void Fnode (Node A);
};

void B::Innode (Node &A,int i)
{
int b=0;
for( ;b<i;b++)
{
cin>>A.code[b];
A.len++;
}
}

void B::Fnode (Node A)
{
int b;
for(b=A.len-1;b>=0;b--)
{
cout<<A.code[b]<<" ";
}
cout<<endl;
}

int main(void)
{
B C;
C.Node node;
C.node.len=0;
int a;
cin>>a;
cout<<"输入"<<a<<"个数"<<endl;
C.Innode (node,a);
for(a=0;a<C.node.len;a++)
cout<<C.node.code[a]<<" ";
cout<<endl;
cout<<node.len<<endl;
C.Fnode (node);
return 0;
} 这程序错误太多达,我想问的是在类中包含结构体,那应该怎样去初始化和调用它?最好能有个例子.先谢达。
...全文
437 点赞 收藏 13
写回复
13 条回复
chenyingshu 2009年02月20日
学习
回复 点赞
fallening 2009年02月20日
//filename c.h
class C
{
private:
struct S;
S* s;
......
};


//filename c.cc
struct C::S
{
int a;
long b;
...
};
回复 点赞
bitwwzhang130 2009年02月20日
可以在定义结构体的默认构造函数,在其中给其成员赋初值
回复 点赞
叶落寒山 2009年02月20日
类中使用结构体。下面是示例代码

#include <iostream>
using namespace std;

class B
{
public:
B();
~B();
void Innode(int i);
void Outnode();
private:
typedef struct
{
int code[100];
int len;
}Node; // typedef 是定义一个数据类型。Node表示一个结构体数据类型
Node m_Node; // 声明一个Node类型的变量 m_Node
};

B::B()
{
m_Node.len = 0;
}

B::~B()
{

}

void B::Innode(int i)
{
for( int b=0;b<i;b++)
{
cin>>m_Node.code[b];
m_Node.len++;
}
}

void B::Outnode()
{
for(int b=m_Node.len-1;b>=0;b--)
{
cout <<m_Node.code[b] <<" ";
}
cout <<m_Node.len <<endl;
}

int main(void)
{
B C;

int a;
cin>>a;

cout <<"输入" <<a<<"个数" <<endl;
C.Innode (a);
C.Outnode();

return 0;
}
回复 点赞
jiangtianyin 2009年02月20日
在类中定义结构体看起来很别扭,还是把结构体定义在外,然后作为类的成员用构造函数初始化比较好
回复 点赞
sxbwelcome 2009年02月20日
有时类中包含结构体可以使得成员的层次关系更清晰。
看下面这个例子就可以解决楼主提出的问题:
#include<iostream.h>
struct Date
{
int year;
int month;
int day;
};
class student
{
public:
student(int new_sno,char* new_name,Date new_birthday);
void ShowBirthday();
private:
int sno;
char* name;
struct Date birthday;
};

student::student(int new_sno,char* new_name,Date new_birthday)
{sno=new_sno;name=new_name;birthday=new_birthday;}//初始化和其他数据成员一样
void student::ShowBirthday()
{cout<<"your birthday is"<<birthday.year<<'-'<<birthday.month<<'-'<<birthday.day<<endl;}
//访问方式也和其他成员一致main()
{
Date d1={1983,2,25};
student stu1(101,"liu",d1);
stu1.ShowBirthday();
return 0;
}
回复 点赞
passionboy03 2009年02月20日
类中包含结构体怪异的很,拿出来定义多好,代码可读性也好……
[Quote=引用楼主 lq651659889 的帖子:]

#include <iostream>
using namespace std;
typedef struct Sqlist
{
int code[100];
int len;
}Node;
void Innode (Node &A,int i)
{
int b=0;
for( ;b <i;b++)
{
cin>>A.code[b];
A.len++;
}
}
int main(void)
{
Node node;
node.len=0;
int a;
cin>>a;
cout < <"输入" < <a < <"个数" < <endl;
Innode (node,a);
for(a=0;a <node.len;a++)
cout < <node.code[a] < <" ";…
[/Quote]
回复 点赞
pengzhixi 2009年02月20日
其实嵌套类就和两个相互分开定义的类一样。嵌套只是为了隐藏底层实现。
回复 点赞
皮皮猪头 2009年02月20日
MARK
回复 点赞
waizqfor 2009年02月20日
[Quote=引用楼主 lq651659889 的帖子:]

#include <iostream>
using namespace std;
typedef struct Sqlist
{
int code[100];
int len;
}Node;
void Innode (Node &A,int i)
{
int b=0;
for( ;b <i;b++)
{
cin>>A.code[b];
A.len++;
}
}

int main(void)
{
Node node;
node.len=0;
int a;
cin>>a;
cout < <"输入" < <a < <"个数" < <endl;
Innode (node,a);
for(a=0;a <node.len;a++)
cout < <node.code[a] < <" ";…
[/Quote]
LZ直接用初始化列表 不就好了嘛 不用那么麻烦的啊
在class里 弄一个构造函数 然后直接创建类的对象 调用构造函数就可以了

B(int code[100],int len):aa(code,len)
{

};

像这样
回复 点赞
maoloverme1 2009年02月20日
是不是应该这样写

#include "stdafx.h"
#include <iostream>
using namespace std;
class B{
public :
typedef struct Sqlist
{
int code[100];
int len;
}Node;
public:
void Innode (Node &A,int i);
void Fnode (Node A);
};

void B::Innode (Node &A,int i)
{
int b=0;
for( ;b <i;b++)
{
cin>>A.code[b];
A.len++;
}
}

void B::Fnode (Node A)
{
int b;
for(b=A.len-1;b>=0;b--)
{
cout <<A.code[b] <<" ";
}
cout <<endl;
}

int main(void)
{
B C;
B::Node node;
node.len=0;
int a;
cin>>a;
cout <<"输入" <<a <<"个数" <<endl;
C.Innode (node,a);
for(a=0;a <node.len;a++)
cout <<node.code[a] <<" ";
cout <<endl;
cout <<node.len <<endl;
C.Fnode(node);
return 0;
}
回复 点赞
Dinelgua 2009年02月20日
to lz
example

class B{
typedef struct Sqlist
{
Sqlist(int code[100],int len)
{
for (int i =0;i<100;i++)
{
this->code[i] = code[i];
this->len = len;
}
}
int code[100];
int len;
}Node;

public:
B(int code[100],int len):aa(code,len)
{

};
private:
Node aa;

};

int main()
{
int iAarry[100];
int iLen = 100;
B b(iAarry,iLen);
return 0;
}
回复 点赞
gamesuwei 2009年02月20日
可以在默认构造函数中初始化。
为什么要在类中包含结构体呢?我还是第1次看到这种写法。
在C++中结构体也是看作一个特殊的类吧
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告