我有一个类定义为,通过引用使用函数调用时出现运行时错误?
class dimension{
public:
dimension();
const char* getname();
long ing getlength();
void setname(const char* text)
void setlength(long int size)
virtual ~dimension();
private:
const char* name;
long int length;
}
我得到有关职能setname
和setlength
错误是很重要的,以便其定义为,
void dimension::setname(const char* text)
{
dimension::name = text;
}
void dimension::setlength(long int size)
{
dimension::length = size;
}
现在我有2种功能,这我是用于从文件中读取类维度对象的数组。他们的定义是。现在
void read_dimension(dimension** dims, int*ndims, const char* text, long int size)
{
int i;
*dims = new dimension[*ndims];
for(i=0; i<ndims; i++)
{
(*dims)[i].setname(text)
(*dims)[i].setlength(size)
}
}
void read_file(char *path, dimension** dims, int *ndims)
{
//do-- open file and read the variables ndims, text and size from it.
read_dimension(dims, ndims, text, size);
//do-- print name and length of all elements of (*dims).
}
,我在主作为
int main()
{
//do-- get file path
dimesnion* gdims;
int num_dims;
read_file(path, &gdims, &num_dims);
//do-- print name and length of each element of gdims.
return 0;
}
当我运行代码从功能read_dimension()
和main()
是不同的,但变量"length"
打印的变量"name"
是调用这些函数相同。
我不明白为什么会发生这种情况。
如果有人能帮忙,我会很高兴。
在函数read_dimension中声明了哪些文本? – Claudio
您发布的'read_dimension'似乎已被截断。特别是变量'text'从哪里来?请注意'name'只是一个char指针,所以如果你在离开'read_dimension'后删除了底层数组,'name'将指向垃圾。 – ComicSansMS
为什么不使用'std :: string'和'std :: vector'来代替? –