gpt4 book ai didi

c++ - 将参数隐式传递给基本构造函数 C++

转载 作者:太空狗 更新时间:2023-10-29 20:51:09 31 4
gpt4 key购买 nike

我对提出的完全相同的问题很感兴趣 here ,但对于 C++。有没有办法隐式传递参数到基类构造函数?这是我试过的一个小例子这是行不通的。当我删除评论并调用基地时显式类构造函数,一切正常。

struct Time { int day; int month; };
class Base {
public:
Time time;
Base(Time *in_time)
{
time.day = in_time->day;
time.month = in_time->month;
}
};
class Derived : public Base {
public:
int hour;
// Derived(Time *t) : Base(t) {}
};
int main(int argc, char **argv)
{
Time t = {30,7};
Derived d(&t);
return 0;
}

如果有帮助,这里是完整的编译行 + 编译错误:

$ g++ -o main main.cpp
main.cpp: In function ‘int main(int, char**)’:
main.cpp:19:14: error: no matching function for call to ‘Derived::Derived(Time*)’
Derived d(&t);
^

最佳答案

你可以像这样把所有的基类构造函数都放到子类的范围内

class Derived : public Base {
public:
using Base::Base;

/* ... */
};

它允许准确的使用场景

Time t = {30,7};
Derived d(&t);

请注意,使用 Base::Base 总是会提供 所有Base 声明的构造函数。没有办法省略一个或多个。

关于c++ - 将参数隐式传递给基本构造函数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51591878/

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