将另一个类的对象传递到当前类C++的构造函数中(不是成员初始化)
Passing object of another class into constructor of current class C++ (Not member initialization)
我正在尝试将Pair
类的对象传递到FollowsQuery
类的构造函数中,如下所示。我收到一个no default constructor exists
错误。我不确定如何纠正此错误。
这是下面Pair.h中Pair
类的定义。对象是通过静态方法创建的CreatePair
。
class Pair
{
public:
pair<DesignEntities, string> firstPair;
pair<DesignEntities, string> secondPair;
static Pair CreatePair(string first, string second, map<string, DesignEntities> varMap);
pair<int, int> getStatementAndPos();
pair<DesignEntities, DesignEntities> getTypes();
private:
Pair(pair<DesignEntities, string> first, pair<DesignEntities, string> second);
};
这是我的以下查询类定义文件。FollowQuery.h
class FollowsQuery : Query {
public:
FollowsQuery(Pair pair);
~FollowsQuery();
Pair pair; // for (s1,s2) in follows(s1,s2)
list<int> filterList;
void setList(list<int> filteredList); // set the curr list from the prev select
list<string> evaluate(PKB pkb);
bool isRelatedToSelect(DesignEntities designEntity); // check if design entity was from prev select
};
这是我的FollowQuery.c类文件,错误发生的地方。
FollowsQuery::FollowsQuery(Pair pair) {
this->pair = pair;
}
尽管我已经查看了stackoverflow并发现了类似的问题,但我无法找到答案,因为我想单独创建Pair
类并将其传递给FollowsQuery
的构造函数。
你会得到FollowsQuery
类的pair
成员的"不存在默认构造函数",因为编译器尝试默认构造pair
但Pair
类没有默认构造函数。
在FollowsQuery
构造中发生的事情基本上是这样的:
FollowsQuery::FollowsQuery(Pair pair)
// Here the `FollowsQuery::pair` member is default constructed
{
// Here you assign to the already constructed `FollowsQuery::pair` member
this->pair = pair;
}
由于Pair
类没有默认构造函数(如前所述(,因此这将不起作用。
通过使用构造函数初始值设定项列表初始化(构造(成员变量来解决此问题:
FollowsQuery::FollowsQuery(Pair pair)
: pair(pair) // Copy-construct the `FollowsQuery::pair` member
{
// Nothing needed here, the `FollowsQuery::pair` member is already initialized
}
相关文章:
- 为什么std::vector和std::valarray初始化构造函数不同
- 初始化构造函数C++中结构的向量
- C++ 中常量属性的初始化构造函数错误
- 不正确的输出和变量未用Eclipse CDT初始化构造函数
- 如何使用嵌套初始化构造函数中的一维向量初始化矩阵
- 如何通过参数初始化构造函数中的数组?
- 是否有理由使用 malloc 初始化构造函数中的指针
- 如何在 c++ 中初始化构造函数中的二维数组
- 为什么初始化构造函数列表参数时会发生异常?
- 无法初始化构造函数
- 初始化构造函数的默认参数的优选方法是什么?
- 在C++17中使用空列表初始化构造函数时发生编译错误
- C++ 初始化构造函数初始化列表中的嵌套结构?
- 初始化构造函数c++中的向量
- g++ (GCC) 4.6.0 我有以下类,我正在尝试初始化构造函数的结构成员初始化列表
- 使用字符串文本初始化构造函数中的 std::array<char,x> 成员。海湾合作委员会错误?
- 初始化构造函数C++中函数的成员指针
- 在c++中初始化构造函数中的静态成员变量时出错
- memset()初始化构造函数中的对象
- 初始化构造函数C++中的成员向量