c++里面,传入一个结构体指针,如何将该指针指向的结构体赋值给另一个结构体实例呢?

structMessage{intx;inty;}传入了一个Message*ms;如何将ms中的值赋给新定义的一个结构体Messagems1呢?我现在做的是将数据取出来一... struct Message

{
int x;
int y;
}
传入了一个Message * ms;
如何将ms中的值赋给新定义的一个结构体Message ms1呢?
我现在做的是将数据取出来一个个赋值,能不能在不知道结构体具体定义的情况下,将所有内容传递给ms1呢?
急求,另加分
展开
 我来答
whitebob
推荐于2017-12-15 · TA获得超过208个赞
知道小有建树答主
回答量:142
采纳率:100%
帮助的人:136万
展开全部
”不知道结构体具体定义“是指没有对应头文件吗?
如果是这样的话,没有办法把一个opaque的实例通过指针进行直接访问,除非提供这个结构体定义的库同时提供了对应的API操作例如拷贝、修改之类的。之所以如此,可能设计时有意保留了对于结构体变化的灵活性。例如需要增添一个新的member(int z) 时,对客户代码没有影响。
其他一切hackary手段来实现这个目的都可能会导致库升级时代码出现未定义行为。

如果有定义,只是不想要一个个赋值来就简单多了。
PLD的struct应该有默认的构造函数,你试一下
Message ms1(*ms);
或者
Message ms1 = *ms;
默认情况下是浅复制,纯值问题不大,但里面有指针时候情况就很复杂了,需要避免对ms1的操作影响ms指针指向的内容,编译器碰到这种情况一般也会waring。
追问
想问一下,
_beginthreadex(NULL, NULL, &serverNet.ListenThread, NULL, NULL, NULL);
这里第三个参数为另外一个类中的函数,应该怎样调用呢?
追答
你这个是要调用某个类的member函数吧。这样的话,要么利用std::bind绑定一个实例或者自己写一个静态的函数warp一下。
第一种方法改为std::bind(&serverNet::ListenThread, server_obj);
第二种方法,写一个
void proxyListenThread(void * arg) {
server_obj.ListenThread(arg);

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式