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++编码的新手
您无法检查是否在运行时创建了本地作用域中的对象.你甚至无法做出决定.它是或者不是,并且可以通过简单地读取代码来确定.你现在正在做的是在两个单独的范围内创建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)
| 归档时间: |
|
| 查看次数: |
661 次 |
| 最近记录: |