C++ 如何声明对象而不在cpp文件中同时定义它
A类有两个构造函数:C++ 如何声明对象而不在cpp文件中同时定义它,c++,C++,A类有两个构造函数: A:A(int ,bool) A:A(int,int,bool) 我想实现这样的目标: if (condition) A object(int,bool); else A object(int,int,bool); proess(object); 但正如您所知,存在一个问题,因为对象的范围仅在if…else… 那么有没有办法做到这一点,我不想把process()放在if…else…中,我也不想使用a*pObject 换言之,我的问题是如何在不定义对象的情况
A:A(int ,bool)
A:A(int,int,bool)
我想实现这样的目标:
if (condition)
A object(int,bool);
else
A object(int,int,bool);
proess(object);
但正如您所知,存在一个问题,因为对象的范围仅在if…else…
那么有没有办法做到这一点,我不想把process()
放在if…else…
中,我也不想使用a*pObject
换言之,我的问题是如何在不定义对象的情况下声明对象?一种可能的方法是设置赋值运算符重载 (
A&operator=(const A&rhs);
)在您的类中,然后执行以下操作:
//have a default constructor and just keep this empty.
A object;
if(condition)
object = A(int, bool);
else
object = A(int, int, bool);
一种可能的方法是设置赋值运算符重载 (
A&operator=(const A&rhs);
)在您的类中,然后执行以下操作:
//have a default constructor and just keep this empty.
A object;
if(condition)
object = A(int, bool);
else
object = A(int, int, bool);
一种可能的方法是设置赋值运算符重载 (
A&operator=(const A&rhs);
)在您的类中,然后执行以下操作:
//have a default constructor and just keep this empty.
A object;
if(condition)
object = A(int, bool);
else
object = A(int, int, bool);
一种可能的方法是设置赋值运算符重载 (
A&operator=(const A&rhs);
)在您的类中,然后执行以下操作:
//have a default constructor and just keep this empty.
A object;
if(condition)
object = A(int, bool);
else
object = A(int, int, bool);
为此,您可以创建一个工厂函数,例如:
A CreateObject(const bool condition)
{
if(condition)
{
return A(int, bool);
}
else
{
return A(int, int, bool);
}
}
然后在代码中的其他地方:
A object = CreateObject(condition);
为此,您可以创建一个工厂函数,例如:
A CreateObject(const bool condition)
{
if(condition)
{
return A(int, bool);
}
else
{
return A(int, int, bool);
}
}
然后在代码中的其他地方:
A object = CreateObject(condition);
为此,您可以创建一个工厂函数,例如:
A CreateObject(const bool condition)
{
if(condition)
{
return A(int, bool);
}
else
{
return A(int, int, bool);
}
}
然后在代码中的其他地方:
A object = CreateObject(condition);
为此,您可以创建一个工厂函数,例如:
A CreateObject(const bool condition)
{
if(condition)
{
return A(int, bool);
}
else
{
return A(int, int, bool);
}
}
然后在代码中的其他地方:
A object = CreateObject(condition);
A对象=条件?A(int,bool):A(int,int,bool)代码>如果幸运的话,复制删除会被踢进去。考虑<代码> STD::可选的<代码>还是Boost选项>代码>一个对象=条件?A(int,bool):A(int,int,bool)代码>如果幸运的话,复制删除会被踢进去。考虑<代码> STD::可选的<代码>还是Boost选项>代码>一个对象=条件?A(int,bool):A(int,int,bool)代码>如果幸运的话,复制删除会被踢进去。考虑<代码> STD::可选的<代码>还是Boost选项>代码>一个对象=条件?A(int,bool):A(int,int,bool)代码>如果幸运的话,复制删除会被踢进去。考虑<代码> STD::可选的<代码>或使用复制/移动赋值操作符的Boost替换,而不是复制cTor。这个想法仍然是一样的。它使用复制/移动赋值操作符,而不是复制向量。你的权利,我有时会混淆这些。这个想法仍然是一样的。它使用复制/移动赋值操作符,而不是复制向量。你的权利,我有时会混淆这些。这个想法仍然是一样的。它使用复制/移动赋值操作符,而不是复制向量。你的权利,我有时会混淆这些。但是,这个想法仍然是一样的。类似地,您可以使用lambda作为工厂函数。类似地,您可以使用lambda作为工厂函数。类似地,您可以使用lambda作为工厂函数。类似地,您可以使用lambda作为工厂函数。