开发者社区> 问答> 正文

有关C++图形编程中模板定义的问题

template 《typename T》
struct tvec3
{
typedef T value_type;
typedef std::size_t size_type;
typedef tvec3《T》 type;
value_type x;
value_type y;
value_type z;
size_type length() const
{
return 3;
}
value_type const & operator const
{
assert(i < this->length());
return (&x)[i];
}
inline tvec3() :
x(value_type(0)),
y(value_type(0)),
z(value_type(0))
{}
template 《typename A, typename B, typename C》
tvec3(A x, B y, C z) :
x(value_type(x)),
y(value_type(y)),
z(value_type(z))
{}
};

如上面的代码,是从网上找到的。这里用模板定义了一个3维向量,不明白的地方是,既然struct了tvec3,为什么在里面的typedef还能定义tvec3,这里的tvec3表示的什么呢?是默认构造函数吗?最后一个tvec3(A x, B y, C z)是重载吗?
PS:因为打<>会不显示,所以上面的我用《》代替了....
希望有大神能为我解答,谢谢...

展开
收起
a123456678 2016-03-09 10:02:07 1962 0
3 条回答
写回答
取消 提交回答
  • 乐于学习与分析

    相当于在tvec3中为tvec3定义了一个别名

    2019-07-17 18:55:27
    赞同 展开评论 打赏
  • 软件开发,安全加密

    相当于在tvec3中为tvec3定义了一个别名

    2019-07-17 18:55:27
    赞同 展开评论 打赏
  • template 
    struct tvec3
    {
    typedef T value_type;
    typedef std::size_t size_type;
    typedef tvec3 type;
    value_type x;
    value_type y;
    value_type z;
    size_type length() const
    {
    return 3;
    }
    value_type const & operator const
    {
    assert(i < this->length());
    return (&x)[i];
    }
    inline tvec3() :
    x(value_type(0)),
    y(value_type(0)),
    z(value_type(0))
    {}
    template 
    tvec3(A x, B y, C z) :
    x(value_type(x)),
    y(value_type(y)),
    z(value_type(z))
    {}
    };
    
    2019-07-17 18:55:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载