gpt4 book ai didi

c++ - 在 C++ 中将映射传递给模板函数时出错

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

我一直在用头撞砖墙,决定提交并发布我的错误。

我有一个传递 std::map 的模板(如下所示),它位于命名空间内。这编译得很好。

我的问题发生在尝试调用函数模板时。我收到以下错误:

error: no matching function for call to 
'getValuePointer(Muon*&, std::map<int, MET*, std::less<int>,
std::allocator<std::pair<const int, MET*> > >*&)'

我做错了什么?

模板代码如下:

#ifndef OBJECTMAPMATCH_H
#define OBJECTMAPMATCH_H

#include <map>
#include <utility>
#include <typeinfo>
#include <iostream>
#include <stdlib.h>

using namespace std;

namespace ObjectMapMatch {


template< class A, class B, class C >
C getValuePointer( A &x , map< B,C> &y )
{

if( y.find(x.Index()) != y.end() ){

return y.find(x.Index()).second;

}else{
cout << "ERROR:ObjectMapMatch::getValuePointer:Can not Find "
<< typeid(y).name() << " FOR " << typeid(x).name() << endl;
exit(1);
}

}

}
#endif

这里是调用模板函数的例子

C = ObjectMapMatch::getValuePointer<ClassC*, int, ClassD*>(A, B);

地点:

C is ClassC*
A is ClassC*
B is std::map<int,ClassD*>*

我做错了什么?

最佳答案

根据错误消息,您将指向 map 的指针作为第二个参数传递,而该函数需要对 map 的引用。

你可以看到这个是因为结尾处的 *:

no matching function for call to 
'getValuePointer(Muon*&, std::map<...>*&)'
^

一旦你解决了这个问题就会有额外的问题:因为 xClassC* 类型,调用 x.Index() 将报错。也许第一个模板参数应该是 ClassC 而不是 ClassC*

关于c++ - 在 C++ 中将映射传递给模板函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8327393/

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