C++实例化没有指针的另一个类构造函数中没有默认构造函数的对象

Wha*_*tax 1 c++ constructor object instantiation

我有两个类,A类和B类.我不希望它们中的任何一个都有默认的构造函数,因为它们都需要用参数实例化.但是,我似乎无法在类B内部创建类A的对象,而不使用默认的公共构造函数,该构造函数允许在没有用户定义的值的情况下实例化类(尝试避免使用默认值).

这是我的设置:

我试图在其他类B中初始化的对象类:

ClassA.h

Class A  //No default constructor
{
public:
    A(int var1, int var2);    //Class A's Constructor
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个在实例化B类时实例化的对象实例,因为我需要传递给B类的值来实例化A类.

ClassB.h

Class B   //No default Constructor
{
public:
    A myClassA;    //The public variable in class B I want to hold an object of class A

    int somePublicVar;

    B(int var1, int var2, int var3);    //Class B's Constructor

}
Run Code Online (Sandbox Code Playgroud)

我似乎无法获得类型A的myClassA对象来实例化.

ClassB.cpp

B::B(int var1, int var2, int var3)
{
    B = A(var1, var2);
    somePublicVar = var3
}
Run Code Online (Sandbox Code Playgroud)

我是C++的新手,但我对C#和C非常熟悉.但我似乎无法找到正确的语法/过程来完成它.

我越是阅读与此问题相关的问题,使用指针实现这一点的越多似乎是解决此问题的"初学者"方式,因为对象需要手动销毁,所以我试图这样做而不用指针.可能吗?这个过程的最佳实践是什么?

如果我必须实现这一点,我将使用指针,但我也在努力解决这个问题,因为如果我将A定义为指针而不是对象,我在执行此操作时会收到错误:

myClassA =&A(var1,var2);

我得到"非标准扩展使用:使用类右值作为左值",因为我的理解是,"A(VAR1,VAR2)"的范围是构造函数和构造完成后都将被删除,因此我们无法保存指针它.所以我不确定在这种情况下如何利用指针方法.

我似乎只能找到这个问题的部分答案,但似乎没有一个能满足所有条件.我很感激帮助.

编辑9/14/17:

我忘了提到我也在尝试将myClassA作为B类中的公共变量.如果我没有默认构造函数,我怎么能阻止它给我"No Default Constructor"错误?

-提前致谢

Ale*_*exD 6

B::B(int var1, int var2, int var3) : myClassA(var1, var2)
{}
Run Code Online (Sandbox Code Playgroud)