使用引用函数调用时出现运行时错误
Runtime Error in using function call by reference?
我有一个类定义为,
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).
}
现在,我将main中的这些函数调用为
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()
打印的变量"name"
是不同的,但变量"length"
是相同的。我不明白为什么会发生这种事。
如果有人能帮忙我将很高兴。
毫无疑问,text是read_dimension函数中的一个局部变量,可能是一个char数组。Dimension::setname将一个指针分配给另一个指针,如前所述,当read_dimension函数中的文本变量超出作用域时会发生什么?它会死…现在,您在维度类中的指针指向"无处"。我更喜欢使用const char *作为字符串字面值或作为指向字符数组中某些字符的指针。如果你想存储一个字符串,你可能会通过strcpy复制它,当然目标字符数组必须有足够的空间。
这段代码的目的是什么:和dimension::length = size;在setname和setlength方法中?你在次元类的范围内,对吧?
相关文章:
- 调用 java 的回调() 时应用程序崩溃.由于 detatchThread 而获得运行时错误
- 在循环中使用lower_bound函数会给出运行时错误
- 从成员变量更新类变量或调用类功能是给出运行时错误
- 为什么在C 类构造函数的正确编译后发生运行时错误
- 为什么此函数中的运行时错误 C++ 深度优先搜索
- C 复制构造函数产生运行时错误
- C++中具有 100000 个递归调用的运行时错误
- 为什么当 std::sort 中的比较函数始终返回 true 时出现运行时错误
- 通过Linux命令行执行时,可执行文件运行正常 - 调用C System()命令时运行时错误
- 在运行时基于函数名称匹配调用函数
- 使用虚拟void函数的类中出现运行时错误,但没有编译错误
- 尝试将动态数组分配作为函数时出现运行时错误
- 为什么在为数组输入并输入合并排序函数后出现运行时错误
- 调用静态成员函数会导致运行时错误
- Substral()运行时错误:已调用R6010中止
- 成员函数指针运行时错误——ESP的值在函数调用中没有正确保存
- GetOpenFileName和系统函数调用运行时错误c++ win32 api
- 使用引用函数调用时出现运行时错误
- ESP在函数调用中没有保存/运行时错误#0
- 运行时错误-函数执行失败后的代码-c++