我有一个接收 achar **
作为参数的方法,以便解析和构造一个正确的内部对象。
void build (const char* values[], const int amount=3)
{
//..parse values and create instance of an inner field..
}
它是不变的,因为我只想使用这些值,根本不需要修改它们。这工作得很好。
现在我希望能够编写一个返回给我的const char **
方法,以便我能够在先前声明的方法中使用这个返回值。起初,我从我的类的实例中获取所需的值,将它们转换为字符串并将它们放入一个数组并返回它,但它抱怨我正在返回一个指向局部变量的指针。所以我想用另一个字段来保存这个指针,我创建了char ** values
. 然后我意识到我需要为它指向的值分配内存,所以我经历了它。目前我描述的方法看起来像:
const char** getValues()
{
string var;
var = toString(point.zone);
values[0]= new char[var.length()+1]();
strcpy(values[0], var.c_str());
var = toString(point.easting);
values[1]= new char[var.length()+1]();
strcpy(values[1],var.c_str());
var = toString(point.northing);
values[2]= new char[var.length()+1]();
strcpy(values[2],var.c_str());
return values;
}
但目前这会抱怨,因为char ** values
不是恒定的。但是如果我让它保持不变,strcpy
就会抱怨相反。如果我不返回它常量,那么我不能在其他函数中使用它。我需要帮助解决这个问题。非常感谢任何帮助,谢谢。