下面的代码在Visual Studio 2010上成功编译。
但是,当我在Linux Eclipse上编译它时,出现错误:
../src/test.cpp:23:27:错误:接收临时[-fpermissive]地址
MyNode *p1 = &(MyNode)*itr;
这是为什么?我必须改变什么?
代码:
#include <stdlib.h>
#include <stdio.h>
#include <map>
#include <list>
using namespace std;
typedef struct MyNode_
{
int abc;
}MyNode;
int main() {
list<MyNode> myList;
list<MyNode>::iterator itr;
for(itr=myList.begin(); itr != myList.end(); ++itr)
{
MyNode *p1 = &(MyNode)*itr; //this line cause compilation error in Eclipse
printf("abc = %d", p1->abc);
}
return 0;
}
最佳答案
如果您确实必须这样做,请改为执行以下操作:
MyNode copy = *itr;
MyNode *p1 = ©
正如评论所言,尝试获取临时地址是行不通的,因为临时者在其所使用的行之后没有有效的内存地址。
关于c++ - 在Eclipse中获取临时地址时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57518429/