#include "stdafx.h"
#include "stdio.h"
struct TestStr
{
int id;
void SetId(int id_new){id = id_new;}
};
int main(int argc, char* argv[])
{
const TestStr ts = {1};
const TestStr* p_ts = &ts;
((TestStr)(*p_ts)).SetId(9);
printf("TestStr::id = %d\r\n",ts.id);
return 0;
}
id还是等于1,不信试试,顺便替换成下面这一句再试试看
((TestStr&)(*p_ts)).SetId(9);
另外还有一个奇怪的问题:
((TestStr)(*p_ts)).SetId(9); //编译通过
((TestStr)(*p_ts)).id = 9; //编译不通过
(&((TestStr)(*p_ts)))->id = 9; //编译通过
谁可以解释一下原因?不知。