gpt4 book ai didi

c++ - C++ 中的递归构造函数

转载 作者:太空宇宙 更新时间:2023-11-04 16:13:34 25 4
gpt4 key购买 nike

我构建了一个包含没有默认构造函数的 vector 的类。具体来说:

template<typename T>
struct MyVector
{
public:
int GetN(void)
{
return n;
}
MyVector(int n1)
{
n=n1;
ListElt = new T[n1];
}
~MyVector()
{
delete [] ListElt;
}
// some other irrelevant to the question code
private:
int n;
T *ListElt;
};

现在我想构建一个从它派生的类,它包含一个整数和一个 vector 。有效的代码如下:

struct EquivInfo {
public:
EquivInfo(int inpOrbit, MyVector<int> &inpMat)
{
iOrbit=inpOrbit;
eVect=new MyVector<int>(inpMat.getN());
// some code for copying the vector in place.
}
~EquivInfo()
{
delete eVect;
}
private:
int iOrbit;
MyVector<int> *eVect;
};

有没有办法避免使用 vector 指针?

问题是,如果我删除指针,则会调用 MyVector() 类型的构造函数。我不懂为什么。应该有一种方法可以让 EquivInfo 的构造函数调用 MyVector

的精确构造函数

我可以添加一个构造函数 MyVector(),即一个将 vector 设置为微不足道的默认构造函数。但准确地说,我想避免使用此类构造函数,以便所有 vector 都得到明确定义并且代码干净。指针的使用让我有一个合理的情况,但我想知道是否有一种干净的方法来避免它。

最佳答案

使用member initializer list :

class EquivInfo {
public:
EquivInfo(int inpOrbit, MyVector<int> &inpMat)
: eVect(inpMat.getN())
, iOrbit(inpOrbit) {
// some code for copying the vector in place.
}

// ....

MyVector<int> eVect;
}

关于c++ - C++ 中的递归构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com