问问题
16264 次
2 回答
9
你的函数:display
并且area
应该这样写:
template <>
double operations<Rectangle>::area( Rectangle const& rect )
{
double width = get<0>(rect);
double height = get<1>(rect);
return width * height;
}
- 至于模板专门的函数,
template <>
应该放在函数的头部。 - 对于静态成员函数,
static
不应出现在函数的定义体中。
于 2013-05-11T03:00:27.817 回答
1
template< typename P > // P is declared here
struct operations {
... // into this scope
}; // but it goes out of scope here
template< typename P > // So it needs to be redeclared
void operations::display( Rectangle const &, std::ostream &) {
... // for this scope.
}
该函数display
不“拥有”其参数的名称。模板参数必须在定义中重新声明。编译器消息指的是template<>
建议您将某些内容放在<>
括号内的语法,但令人困惑的是,将括号留空并且字面template<>
意思是其他意思-显式专业化,这不是您想要的。
另一方面,是定义中未提及static
的成员函数的属性。在使用定义签名的其他部分将其与声明签名匹配后,编译器会记住。因此,您应该从定义中删除。static
static
于 2013-05-11T03:43:16.197 回答