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"错误?
-提前致谢
B::B(int var1, int var2, int var3) : myClassA(var1, var2)
{}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2777 次 |
| 最近记录: |