
多加一个大括号。
比如
struct A{
int a;
char b;
};
struct B
{
float a;
struct A sa;
double b;
};
可以
struct B b = {11,{10, 'c'}, 22};Date()里面的用你自定义的结构体类型做形参的类型!class
Date
{
public:
Date(struct
Time
t)
{
//这里是实现功能函数体,也就是初始化结构体数据成员!
}
private:
struct
Time
T;//要初始化的结构体数据成员!
//Date类里其他成员我就省略没写了!
}
希望对你有用,谢谢!
希望多看看C++类、构造函数等相关内容!sturct [name]{
[变量声明];
;
};
初始化:[name] [变量名];
赋值:[变量名]={[内部变量],};
[变量名][内部变量]=[值];
希望对你有帮助struct node nodes[MAX];
memset(nodes,0,sizeof(nodes));
这样就全部初始化为全0了。(注意结构体数据成员不能是非纯C成员。比如string等)。你好,试试这个。
C/C++ code
struct Point
{
int x;
int y;
Point(int x0,int y0)
{
x=x0;
y=y0;
}
};
class CTest
{
public:
CTest():
m_iCount(0), //将m_iCount初始化为0
m_Point(0,0) //这里应该怎么写,对于结构体?
{}
private:
int m_iCount;
Point m_Point;方法是有的,不过并不太赞成这种做法,不过如果仅仅是作为初始化使用的话,可以先定义一个初始化的函数,并保证在别的地方不再调用这个函数,倒也可以行,代码如下:
#include <stdioh>
#include <malloch>
typedef struct
{
int const p;
} C;
int main()
{
int i = 0;
C c = (C)malloc(sizeof(C));
printf("Old: 0x%08X\n", c->p);
(int)(c->p) = &i; // 最关键的一步。
printf("new: 0x%08X\n", c->p);
free(c);
return 0;
}
----------------------------------- 补充1
C中是没有构造函数的概念的,所以妄图想C++那样在对象构造的同时对对象进行初始化是误解的,唯一的方法就是写一个特殊的函数,用这个函数来初始化一个结构体的内存,甚至可以用memset()函数都可以,所以你的要求已经退化成如何对结构体进行初始化了,这是很多C++程序员回头写C程序的时候,都会反复思考的问题。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)