E1790 无法引用 "Warehouse::ProductNode" 的默认构造函数 -- 它是已删除的函数 P
时间: 2024-06-02 08:12:34 浏览: 83
这个错误提示是因为你在使用 `Warehouse::ProductNode` 的默认构造函数,但是该构造函数已被删除。这通常是因为类中有某些成员变量被声明为不能被默认构造的类型(比如引用类型),而默认构造函数会尝试对所有成员变量进行默认初始化。
解决这个问题的方法有两种:
1. 如果你确实需要默认构造函数,那么你需要修改 `Warehouse::ProductNode` 类,将所有成员变量都声明为可以被默认构造的类型,或者手动提供一个适当的默认值来初始化它们。
2. 如果你不需要默认构造函数,那么你可以将其删除,或者将其声明为 `delete`。这样,当你尝试使用默认构造函数时,编译器会直接报错,而不是尝试调用已删除的函数。
你可以根据你的实际需求选择适合的方法来解决这个问题。
相关问题
E1790 无法引用 "Warehouse::ProductNode" 的默认构造函数 -- 它是已删除的函数
这个错误通常是因为你在使用一个已被删除的默认构造函数。
在 C++11 中,当一个类有自定义的构造函数时,编译器就不会再自动生成默认构造函数。如果你需要使用默认构造函数,你需要显式地声明和定义它。
如果一个类的默认构造函数被删除了,这个类就不能再使用默认构造函数,否则就会出现编译错误。
解决方案有两种:
1. 定义一个自定义的默认构造函数。
在你的类中添加一个自定义的默认构造函数,以便你可以在需要时调用它。例如:
```cpp
class ProductNode {
public:
ProductNode() = default;
// ...
};
```
2. 避免使用默认构造函数。
如果你不需要默认构造函数,你可以在创建对象时使用其他构造函数。例如:
```cpp
ProductNode node("product name", 100, 10);
```
这样就可以避免使用默认构造函数,从而避免出现编译错误。
./bin/sqoop export --connect jdbc:mysql://localhost:3306/dblab --username root --password '1' --table user_action --export-dir '/user/hive/warehouse/dblab.db/user_action' --fields-terminated-by '\t';
这是一个 Sqoop 命令,用于将 Hadoop 中的数据导出到 MySQL 数据库中。具体参数含义如下:
--connect:指定目标数据库的连接地址;
--username:指定连接数据库的用户名;
--password:指定连接数据库的密码;
--table:指定将数据导入到目标数据库中的哪个表中;
--export-dir:指定源数据所在的 HDFS 路径;
--fields-terminated-by:指定源数据文件中字段之间的分隔符。
该命令将 Hadoop 中的 /user/hive/warehouse/dblab.db/user_action 数据导出到 MySQL 数据库的 user_action 表中。