如何在不使用指针的情况下将派生类的对象作为参数传递给基类中的函数?
How can we pass object of derived class as a parameter to a function in base class without using pointer?
我正在处理一个代码,我需要将派生(子(类的对象作为参数传递到base(Parent(类的函数中。我已经研究了很多已经提出的问题,但所有这些问题都使用指针给出解决方案。(其中一些是以下(
将派生类传递给基函数
将派生类的对象传递给基类
将派生类中指向成员函数的指针强制转换为指向抽象成员函数的指针
基类引用派生类的指针
但我想问一下,是否有任何方法可以在不使用指针或引用的情况下做到这一点。这是我的代码。请在上述上下文中指导我。
class parent;
class child;
class parent{
public:
void demo(child c)
{
cout<<"Parent"<<endl;
}
};
class child:public parent{
public:
void demoChild()
{
cout<<"Child"<<endl;
}
};
int main()
{
parent p;
child c;
p.demo(c);
c.demo(c);
return 0;
}
函数定义中的按值传递参数不能是不完整的类型。您只需在类中 delcare 演示成员函数,并在已经是完整类型的某个地方定义它child
:
class parent;
class child;
class parent
{
public:
void demo(child c); // incomplete type allowed in declaration
};
class child : public parent
{
public:
void demoChild()
{
std::cout << "Child" << std::endl;
}
};
void parent::demo(child c) // child is a complete type here
{
std::cout << "Parent" << std::endl;
}
现场演示:https://godbolt.org/z/7MNMC3
无论如何,如果你的代码不仅仅是为了学习目的,我猜这是一个XY问题。
相关文章:
- 如何在不使用指针的情况下将派生类的对象作为参数传递给基类中的函数?
- 如何将对象数组作为参数传递给模板
- 如何将成员函数作为参数传递并在派生对象上执行方法列表
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- 对象作为参数传递,就好像我们正在传递构造函数值一样
- 初始化对象以在 C++08 中作为参数传递的首选语法是什么?
- 将对象作为参数传递,没有可行的重载"="
- 在将匿名对象作为参数传递时,不会调用任何构造函数
- 是否可以创建一个指向对象的智能指针并将此智能指针作为参数传递给构造函数?
- C++:将对象作为参数传递
- 将 std::ofstream 对象作为参数传递给类方法
- 将对象向量的指针作为参数传递,但差异更大
- 使用 lambda 和可变参数模板延迟初始化对象 - 任意传递值
- 当数组对象以函数参数传递时,为什么复制构造函数会自称
- 如何将对象作为参数传递
- 将对象作为C 中的参数传递
- 将新对象的名称作为参数传递
- 将对象数组作为参数传递的最佳方法是什么
- 为什么将临时对象作为参数传递需要 std::move?
- 通过引用将对象参数传递给函子