gpt4 book ai didi

c++ - 引用派生类指针的 std::vector 作为函数的输入参数

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:22 25 4
gpt4 key购买 nike

首先,如果还有类似的问题但我没有找到,我想道歉。我一直在尝试,但由于问题非常具体,我找不到。

现在,问题来了。我有一个基类和一个派生类(比如 BNode 和 DNode ),并且我有一个 BNode* 的 std::vector 。我还有一个函数,它接收对这些指针的 vector 的引用。尝试将指向派生对象的指针的 std::vector 作为参数传递给此函数时遇到问题:

class BNode
{
};

class DNode : public BNode
{
};

class Other
{
function(std::vector<BNode*>& inputVector) { }
}

当试图将指针 vector 传递给派生类时,我从 VS 收到的错误是:

1> error C2664: 'Other::function' : cannot convert parameter 1 'std::vector<T>' to 'std::vector<T> &'
1> with
1> [
1> T=DNode *
1> ]
1> and
1> [
1> T=BNode *
1> ]

谢谢。

最佳答案

你的问题是即使DNode源自 BNode , std::vector<DNode*>不是来自 std::vector<BNode*> .

因此,编译器不知道如何从一种类型转换为另一种类型。

但是你可以这样做:

std::vector<BNode*> bnode_list;
std::vector<DNode*> dnode_list(bnode_list.begin(), bnode_list.end());

关于c++ - 引用派生类指针的 std::vector 作为函数的输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3922335/

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