【发布时间】:2017-03-31 03:53:59
【问题描述】:
以下函数必须为对象数据库分配内存,并分配指向对象数组的指针。
然后,指针将使用指针算术循环遍历数组,并根据用户输入将每个对象初始化为正确的值。
这是不起作用的代码:
//**********************************************************************
//* Get Database Records *
//**********************************************************************
record* get_records_database(int quantity)
{
record *p_database; // Pointer to the records database
record *p_record; // Pointer to each object in the database
int index = 1; // Number of objects in the database
// Allocate a database of object records
try
{
p_database = new record[quantity];
}
catch (bad_alloc xa)
{
fatal_error(ALLOC_ERR, "get_records_database",
"object records database");
}
// Loop processing object records until the database is filled
// --- //
// Test:
p_database->set_amount(400);
p_database->get_amount();
return p_database;
}
我面临的问题是在 VisualStudio 中修复以下编译器错误:错误 C4703:使用了可能未初始化的本地指针变量“p_employee_database”。
这是一个项目;需要使用 new、try、catch 和指针;函数的结构是必需的(不是全部写在这一点上);指向类的指针的返回值是必需的。我的老师对他的要求非常严格。
非常感谢您对解决此错误的任何帮助。谢谢;)
【问题讨论】:
-
什么是
fatal_error,为什么你的代码在发生错误时会继续运行,就好像它们没有问题一样? -
@PaulMcKenzie 致命错误函数打印错误消息并以错误号退出。
-
从什么退出?程序??
-
@PaulMcKenzie 是的,使用
exit(); -
Please don't do that。无论如何,编译器警告是有保证的,因为编译器看到的是它所看到的。您发现了错误,并且该本地块中没有任何内容建议您离开该功能。
标签: c++ pointers dynamic-memory-allocation