我有以下代码 -
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 ++编码新手
答案 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)
{
...
}