Mac OSX,我试图使用tchar.h,但显然这是Windows特定的。我猜这是这个代码不适合我的原因:与本地变量关联的栈内存地址返回(C++)
//toString
char *Node::toString(){
char hilera[100];
strcpy(hilera, dato->toString());
strcat(hilera, "\n");
return hilera;
}
那么,你有什么建议?
Mac OSX,我试图使用tchar.h,但显然这是Windows特定的。我猜这是这个代码不适合我的原因:与本地变量关联的栈内存地址返回(C++)
//toString
char *Node::toString(){
char hilera[100];
strcpy(hilera, dato->toString());
strcat(hilera, "\n");
return hilera;
}
那么,你有什么建议?
退出功能范围hilera
将被销毁后,将返回悬挂指针。使用std::string
,或者在堆中分配内存。
对于'std :: string' +1 - 如果你的代码是C++(尽管有C++的互操作性......),那么没有理由绕过C字符串。 –
代码不工作的原因是它返回一个局部变量的地址,这是一个未定义的行为。你需要动态分配一个缓冲区并返回它的地址。或者,因为这是C++返回std::string
。
它必须是C++,因为C没有成员函数和名称空间。 –
@MooingDuck,do'h!正在专注于该功能的实施。 – hmjd
你的代码不起作用? –
您似乎没有尝试使用'tchar.h' –