结构体初始化失败

yyang0514 2013-07-15 07:44:00
结构体在初始化的时候报出无法冲test* 类型转换 node* 类型,请问是哪里出错了。

typedef struct basetype
{
unsigned int array[3];
unsigned int m;
}BASETYPE;
typedef struct node{
BASETYPE c;
node(BASETYPE* p):next(0),prev(0)
{
c.m=p->m;
for(int i=0;i<3;i++)
{
c.array[i]=p->array[i];
}
};
void Print()
{
cout<<c.m<<endl;
for(int i=0;i<3;i++)
{
cout<<c.array[i]<<endl;
}

}
node():next(0),prev(0){};

struct node *next,*prev;
}Node;
int main()
{
BASETYPE input={1001,2,3,4};

Node* test(&input);//这里始终提示类型转换问题,而导致无法通过编译
test->print();
}

...全文
183 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinjuning 2013-07-16
  • 打赏
  • 举报
回复
Node* test(&input);//这里始终提示类型转换问题,而导致无法通过编译 类型有问题,参考LSD的回复。。
JoeBlackzqq 2013-07-15
  • 打赏
  • 举报
回复

#include <iostream>

using namespace std;

typedef struct basetype
{ 
	unsigned int array[3];
	unsigned int m;      
}BASETYPE;

typedef struct node{
	BASETYPE c;
	node(BASETYPE* p):next(0),prev(0)
	{
		c.m = p->m;
		for(int i = 0; i < 3; i++)
		{
			c.array[i] = p->array[i];
		}
	}
	void Print()
	{
		cout << c.m << endl;
		for(int i = 0; i < 3; i++)
		{
			cout << c.array[i] << endl;
		}

	}
	node():next(0),prev(0){};

	struct node *next,*prev;
}Node;

int main()
{
	BASETYPE input  =  {1001,2,3,4};

	Node test(&input);//这里始终提示类型转换问题,而导致无法通过编译
	test.Print();
}

/*
运行情况:

E:\Program\c\tgcc>make
g++ -o a a.cpp

E:\Program\c\tgcc>a
4
1001
2
3

*/

qzf362269994 2013-07-15
  • 打赏
  • 举报
回复
Node test(&input); test.Print();
qzf362269994 2013-07-15
  • 打赏
  • 举报
回复
Node* test=new Node(&input);

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧