模板函数错误,"no matching function for call to..."
Template Function error, "no matching function for call to..."
看,我有这个代码:
template<typename T=int>struct color
{
T red, green, blue;
color(T r, T g, T b)
:red(r), green(g), blue(b)
{
}
#ifdef SDL_BACKEND
template<typename R,typename S> R map(S surf)
{
return SDL_MapRGB(surf->format,red,green,blue);
}
#endif /* SDL_BACKEND */
};
我在这里使用它:
pro::color<int> black(0,0,0);
SDL_FillRect(screen, 0, black.map(screen));
现在我得到的错误是:
错误:调用"pro::color::map(SDL_Surface*&)"|时没有匹配函数
我在模板方面没有那么多经验,所以我以前从未见过这个错误。到底是什么问题?
注意:我没有用"SDL"标记,因为IMHO这个问题更多地与模板有关,我使用SDL的事实无关紧要。此外,我正在将gcc-4.4x与-std=c++0x
一起使用。
这与元编程无关。这只是正确使用模板的问题。返回类型无法推导,因此必须指定它;在函数或模板实例化中。也就是说,从这两个中选择一个:
// Version #1: Change function definition
template<typename S> Uint32 map(S surf) { return SDL_MapRGB(surf->format,red,green,blue); }
// Version #2: Change invocation
black.map<Uint32>(screen);
(事实上,我真的不明白你为什么需要一个模板。为什么不把函数变成Uint32 map(SDL_Surface *)
呢?)
相关文章:
- "error: no matching function for call to"构造函数错误
- 调用专用模板时出错"no matching function for call to [...]"
- "no matching function for call to 'Vector::Vector'"错误
- 从 TVector2 类派生复杂类:"No matching function for call to Complex::Complex()"
- 学习 c++,编译错误"no matching function for call"
- ESP32-AsyncUDP own handler function for udp.onPacket
- 结构错误:"no matching function for call to "
- 创建函数变体向量时"No matching function for call"错误
- 如果子类中没有构造函数方法,则错误"no matching function for call to 'LGame::LGame(String&)'"
- 提升多精度浮点数128:标准::exp错误:'no matching function for call'
- "error: no matching function for call to",我无法更改结构的定义
- 我的程序显示许多错误,"error: no matching function for call to 'getPercentScore'"
- 调用模板函数的问题"No matching function for call"参数:迭代器、对象函数
- 尝试在矢量上使用擦除功能时"no matching function for call"
- "error: no matching function for call to ‘push_back(char [6])" .如何解决此代码中的错误?
- 使用 std::min "no matching function for call to ‘min(<brace-enclosed initializer list>)’"时出错
- C++字符串.替换生成"No matching function for call"错误
- 如何修复从基类继承两次时"error: no matching function for call to"
- "No matching function for call to ... "在源中使用 CGImage 时C++
- 编译代码时"No matching function for call"。[QTS天线端口打开读取]