gpt4 book ai didi

C++ : declaring in if/else : var not declared in this scope

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:23:05 28 4
gpt4 key购买 nike

我不明白 C++ 中的某些东西,gcc 不喜欢我如何进行。
我做到了:

    if (!fModeMdi)
MyFirstClass* main = (MyFirstClass*) fMaino;
else
MySecondClass* main = (MySecondClass*) fMdio;
...
...
int i = main->GetNum();

我得到这个错误:

file.C:211:16: warning: unused variable 'main' [-Wunused-variable]
file.C:213:15: warning: unused variable 'main' [-Wunused-variable]
file.C:219:9: error: 'main' was not declared in this scope

我不能在我的 header 中声明main,因为他的类型取决于fModeMdi boolean。
请问我该如何解决这个问题?

最佳答案

如果 MyFirstClassMySecondClass 通过继承相关,那么您可以执行@unkulunkulu 在他的回答中建议的操作。

但是,如果 MyFirstClassMySecondClass不相关类,那么您可以将模板用作:

if (!fModeMdi)
{
do_work(static_cast<MyFirstClass*>(fMaino));
}
else
{
do_work(static_cast<MySecondClass*>(fMaino));
}

其中 do_work 是一个函数模板,实现为:

template<typename T>
void do_work(T *obj)
{
int i = obj->GetNum();

//do rest of the work here....
}

请注意,即使它们是相关的,此模板解决方案也可以工作!!

关于C++ : declaring in if/else : var not declared in this scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11207388/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com