我需要解决编译器正在接收的错误 - 我理解为什么它会接收到该错误但需要解决它,因为函数(抛出错误)只会在指针为<时执行/ i>已初始化。
这是我的伪代码:
if (incoming_message_exists)
{
msg_class* current_msg;
/*current_msg will become either value_1 or value_2*/
/*code block 1*/
if (condition_is_fulfilled)
{
current_msg = value_1;
}
/*code block 2*/
else
{
current_msg = value_2;
}
/*code block 3*/
/*bool function performed on current_msg that is throwing error*/
if (function(current_msg))
{
//carry out function
}
}
我宁愿不在1和2内执行代码块3,但如果这是唯一的解决方案,那么我会。提前谢谢!
答案 0 :(得分:5)
您向我们展示的if
和else
分支来自两个不同的if
陈述吗?
如果是,您当前的代码能够保留current_msg
未初始化。当您到达function(current_msg)
时,这可能会崩溃。
如果你为同一个if
语句向我们展示了两个分支,那么你的编译器就错了 - current_msg
没有被初始化的危险。您可能仍需要更改代码以禁止警告,例如,如果您将警告构建为错误。
您可以通过在声明
时初始化current_msg
来修复/取消警告
msg_class* current_msg = NULL;
如果在任一分支中都没有其他代码,您也可以使用三元运算符
进行初始化msg_class* current_msg = condition_is_fulfilled? value_1 : value_2;
如果警告是真的,你还必须检查function
是否应该通过NULL
论证或防范此
if (current_msg != NULL && function(current_msg))