作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在非模板类中专门化模板化方法,其中方法的返回类型包括模板化类型 - 此方法不接受任何参数。我一直在四处寻找并试图通过反复试验来编译东西,但无济于事。
如何构建此代码?这样的语法甚至可能吗? (我试图专门化的模板化方法是 cBar::getFoos
,如以下评论中所标记。)
下面的精简示例代码:
#include <vector>
////////////////////////////////////////////////////////////////////////////////
// the non-templated class below contains std::vector objects of these types
// (tBuiltInType is an int, float, or bool - but hopefully that's not an
// assumption that needs to be made, as I'd like to include more complex types)
template< typename tBuiltInType >
class cFoo
{
public:
// ...
void doSomething()
{
// ... (unimportant what happens here, but stuff happens)
}
private:
std::vector< tBuiltInType > m_objects;
};
////////////////////////////////////////////////////////////////////////////////
// this contains the templated method I'm trying to specialize - getFoos
class cBar
{
public:
// ...
// this is the method I'm trying to specialize by contained type (see private area)
// getFoos< int >() would return m_intFoos, etc.
template< typename tBuiltInType >
std::vector< cFoo< tBuiltInType > > &getFoos();
// (probably unimportant) example use
template< typename tBuiltInType >
void doSomething()
{
for ( cFoo< tBuiltInType > &foo : getFoos< tBuiltInType >() )
foo.doSomething();
}
private:
std::vector< cFoo< int > > m_intFoos;
std::vector< cFoo< bool > > m_boolFoos;
std::vector< cFoo< float > > m_floatFoos;
};
////////////////////////////////////////////////////////////////////////////////
// some (also probably unimportant) example usage code
int main()
{
cBar bar;
bar.doSomething< int >();
bar.doSomething< bool >();
bar.doSomething< float >();
return 0;
}
(我正在拜访我的家人并且没有笔记本电脑,所以我通常的开发设置不可用 - 我可以发布我一直在尝试的在线编译器尝试的错误,但我怀疑它会做很多好事在这里,因为没有多少人会看到神秘的在线编译器错误并知道该怎么做,所以为了稍微压缩问题文本,我将跳过那部分。)
最佳答案
继续并在类外对其进行特化:
template<>
std::vector< cFoo< int > >& cBar::getFoos() { return m_intFoos; }
关于c++ - 您如何在非模板类中专门化没有参数的模板方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27594672/
我有一个带有模板函数的基类,该函数具有通用模板类型和专用版本。 #ifndef BASE_CLASS #define BASE_CLASS #include using namespace std;
我有这个 3D vector 模板 template class Vec3TYPE{ public: union{ struct{ TYPE x,y,z; }; struct{ TY
我是一名优秀的程序员,十分优秀!