检查是否创建了对象C++

use*_*272 -3 c++ visual-studio-2005 class declaration object

我有以下代码 -

string classNeeded;//set to either "Max" or "Min"

if(strcmp(classNeeded, "Max") == 0)
{

    Maximum maxi;//object of class Maximum declared

}
else
{

    Minimum mini;//object of class Minimum declared

}

while(/*Conditions*/)
{

    //Some processing
    //Use maxi or mini depending on which one is declared

}
Run Code Online (Sandbox Code Playgroud)

我需要检查是否声明了maxi并使用它,或者如果没有声明,请使用mini.如何在C++ Visual Studio 2005中检查是否声明了对象?

PS:我是VS2005 C++编码的新手

Ben*_*ley 5

您无法检查是否在运行时创建了本地作用域中的对象.你甚至无法做出决定.它是或者不是,并且可以通过简单地读取代码来确定.你现在正在做的是在两个单独的范围内创建2个对象.它们不存在于创建它们的范围之外,因此您不能在以后的while循环中使用它们.您可以使用具有动态分配的指针,但更好的想法是将while循环分解为一对重载函数.

void DoIt(Maximum maxi)
{
    while(/*Conditions*/)
    {
        //Some processing
        //Use maxi
    }
}

void DoIt(Minimum mini)
{
    while(/*Conditions*/)
    {
        //Some processing
        //Use mini
    }
}
Run Code Online (Sandbox Code Playgroud)

然后:

if(strcmp(classNeeded, "Max") == 0) // no comment
{
    DoIt(Maximum());
}
else
{
    DoIt(Minimum());
}
Run Code Online (Sandbox Code Playgroud)

如果while循环中的代码对于两个函数看起来都相同,只是使用不同的对象,则可以使用模板.

template<typename T>
void DoIt(T& object)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)