C++ 如何声明对象而不在cpp文件中同时定义它

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: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作为工厂函数。