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

时间:2014-08-21 07:13:40

标签: c++ class object visual-studio-2005 declaration

我有以下代码 -

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

}

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

P.S。:我是VS2005 C ++编码新手

1 个答案:

答案 0 :(得分:5)

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

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

void DoIt(Minimum mini)
{
    while(/*Conditions*/)
    {
        //Some processing
        //Use mini
    }
}

然后:

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

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

template<typename T>
void DoIt(T& object)
{
   ...
}