gpt4 book ai didi

c++ - 在初始值设定项列表中采用多个参数的成员变量

转载 作者:行者123 更新时间:2023-11-28 01:19:26 25 4
gpt4 key购买 nike

当初始化列表中的成员变量接受多个参数时,它是如何工作的?如果我的理解是正确的,这样的变量只需要一个参数...

我遇到这个问题的实际代码如下所示,你可以发现成员group_trajectory有三个参数。

ChompOptimizer::ChompOptimizer(ChompTrajectory* trajectory, const planning_scene::PlanningSceneConstPtr& planning_scene,
const std::string& planning_group, const ChompParameters* parameters,
const moveit::core::RobotState& start_state)
: full_trajectory_(trajectory)
, robot_model_(planning_scene->getRobotModel())
, planning_group_(planning_group)
, parameters_(parameters)
, group_trajectory_(*full_trajectory_, planning_group_, DIFF_RULE_LENGTH)
, planning_scene_(planning_scene)
, state_(start_state)
, start_state_(start_state)
, initialized_(false)
{

最佳答案

If my understanding is correct, such a variable takes only one argument...

这是不正确的。初始化数据成员遵循数据成员类型产生的规则。如果一个数据成员的构造函数接受一个参数,它必须像那样被初始化。如果需要三个,您必须提供三个。您显示的示例代码可能会产生误导,因为所有其他构造函数只需要一个参数 - 但这是巧合(或良好做法,考虑到长参数列表是一个缺陷)。示例:

struct A {
A(int) {} // takes one argument
A(int, double) {} // overload with two arguments
};

struct B {
B(int, int, int) {} // takes three argument
};

struct Test {
Test() :
a(42), b(42, 43, 44) {}

A a;
B b;
};

在此示例中,a(42) 也可以是 a(42, 3.14),因为这样的构造函数也可用。只需传递类型所需的内容即可实例化。

关于c++ - 在初始值设定项列表中采用多个参数的成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57215542/

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