【发布时间】:2021-06-24 18:36:36
【问题描述】:
我对 c++ 相当陌生,想知道是否有更好的解决方案来解决这个问题。我目前有一个抽象类,其中有多个不同的类(i_c)实现该接口和其他对象的构造函数,它们一次使用这些实现的类作为参数。每个构造函数的其他参数保持不变。 所以我的方法是为对象和工厂方法的每个可能的 i_c 构造一个构造函数,根据参数构造对象。 我知道你不能将抽象类作为参数,但是有没有另一种方法可以避免为每个参数类型编写构造函数? 提前致谢
代码本身可能很长,所以我尝试以抽象形式发布:
class parent_robot
{
public:
virtual void move_tcp() = 0;
};
class child_robot_a
: public parent_robot
{
public:
void move_tcp() override;
private:
Eigen::Affine3d gripper_location_;
};
class child_robot_b
: public parent_robot
{
public:
void move_tcp() override;
private:
Eigen::Affine3d camera_location_;
};
class child_robot_c
: public parent_robot
{
public:
void move_tcp() override;
private:
Eigen::Affine3d gripper_location_;
};
class gui_object_identical_a{
gui_object_identical_a::gui_object_identical_a(
child_robot_a& r_a,
identical_parameter_a& a,
identical_parameter_a& b)
:
child_robot_(r_a),
member_a_(a),
member_b_(b)
{}
}
class gui_object_identical_b{
gui_object_identical_b::gui_object_identical_b(
child_robot_b& r_b,
identical_parameter_a& a,
identical_parameter_a& b)
:
child_robot_(r_b),
member_a_(a),
member_b_(b)
{}
}
class gui_object_identical_c{
gui_object_identical_c::gui_object_identical_c(
child_robot_b& r_c,
identical_parameter_a& a,
identical_parameter_a& b)
:
child_robot_(r_c),
member_a_(a),
member_b_(b)
{}
}
【问题讨论】:
-
你能告诉我们你的代码吗?
-
请包含minimal reproducible example 书面文字对于描述编码细节非常糟糕。
-
如果构造函数的参数数量或类型不同,那么您必须编写每个构造函数...除非您使用模板。
-
听起来像是模板和概念的工作(在最新版本的 C++ 标准中)。您可以在 C++ 教科书中找到更多相关信息。
-
我添加了一些示例代码。我希望它有用
标签: c++ constructor parameter-passing