如何避免为类指定模板参数?

用户名

SFML对Vector2的实现允许以下语法:

sf::Vector2f v1(16.5f, 24.f);
sf::Vector2f v2 = v1 * 5.f;
sf::Vector2f v3;

...表示您在创建对象时不必指定template参数。我正试图出于自己的目的复制此代码,但无法查看其工作方式。看起来是这样的:

template <typename T>
class Vector2
{
public :

  Vector2();

  Vector2(T X, T Y);

  template <typename U>
  explicit Vector2(const Vector2<U>& vector);

  // Member data
  T x;
  T y;
};

我的尝试看起来像:

#include <type_traits>

template <typename T, typename = typename std::enable_if<
                                 std::is_same<T, int>::value 
                              || std::is_same<T, float>::value, T>::type>
struct Point
{
    T x, y;

    Point(T x, T y) : x(x), y(y)
    {
    }

    template <typename U>
    explicit Point(const Point<U>& point)
        : x(point.x), y(point.y)
    {
    }
};

但是我仍然收到错误消息“缺少模板参数”。我不是做什么的SFML?

光碟

在您链接的源文件中,请注意底部附近的这一行:

typedef Vector2<float> Vector2f;

这将创建Vector2<float>类型的别名Vector2f-它们是相同的类型,只是可用于不同的名称。

您可以做同样的事情:

typedef Point<float> Pointf;
typedef Point<int> Pointi;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何指定模板参数为类模板,并从另一个模板参数推断其模板类型?

来自分类Dev

如何检查模板参数是否为结构/类?

来自分类Dev

如何避免将参数传递给基于引用的帮助器类的模板实例化

来自分类Dev

以类为参数调用模板类的静态模板方法

来自分类Dev

通过模板的侦听器模式,如何在不指定模板参数的情况下使用模板化类?C ++

来自分类Dev

以类方法为参数的C ++模板

来自分类Dev

如何通过类模板的参数指定成员函数(内部类更好)?

来自分类Dev

根据派生的类字段指定基类模板参数

来自分类Dev

如何不指定模板模板(+ template)参数的内部模板

来自分类Dev

如何指定参数为可选

来自分类Dev

如何将嵌套模板类实例化设置为默认模板参数,具体取决于其他参数

来自分类Dev

如何避免无参数案例类?

来自分类Dev

如何在C ++中为多个类类型指定相同的模板化成员函数?

来自分类Dev

自C ++ 17以来,可否为构造函数提供模板参数推导,从而允许显式指定某些类模板参数?

来自分类Dev

当类型为参数时如何避免 typeid

来自分类Dev

如何使用模板模板参数专门化类模板?

来自分类Dev

如何确定从类模板继承的模板参数的基础模板类型?

来自分类Dev

如何声明采用模板类参数的模板类

来自分类Dev

模板类的模板参数

来自分类Dev

如何在C ++中使用通用引用参数为模板类编写构造函数

来自分类Dev

C ++ 20模板lambda:如何指定模板参数?

来自分类Dev

C ++ 20模板lambda:如何指定模板参数?

来自分类Dev

C ++ 20模板lambda:如何指定模板参数?

来自分类Dev

如何使用类的类型作为模板的参数

来自分类Dev

如何扩展可变参数模板类

来自分类Dev

如何从类构造函数传递模板参数

来自分类Dev

如何使用参数调用类模板函数

来自分类Dev

如何告诉模板参数是从某个类派生的

来自分类Dev

C ++动态向下转换到具有模板模板参数为类模板或别名模板的类模板

Related 相关文章

  1. 1

    如何指定模板参数为类模板,并从另一个模板参数推断其模板类型?

  2. 2

    如何检查模板参数是否为结构/类?

  3. 3

    如何避免将参数传递给基于引用的帮助器类的模板实例化

  4. 4

    以类为参数调用模板类的静态模板方法

  5. 5

    通过模板的侦听器模式,如何在不指定模板参数的情况下使用模板化类?C ++

  6. 6

    以类方法为参数的C ++模板

  7. 7

    如何通过类模板的参数指定成员函数(内部类更好)?

  8. 8

    根据派生的类字段指定基类模板参数

  9. 9

    如何不指定模板模板(+ template)参数的内部模板

  10. 10

    如何指定参数为可选

  11. 11

    如何将嵌套模板类实例化设置为默认模板参数,具体取决于其他参数

  12. 12

    如何避免无参数案例类?

  13. 13

    如何在C ++中为多个类类型指定相同的模板化成员函数?

  14. 14

    自C ++ 17以来,可否为构造函数提供模板参数推导,从而允许显式指定某些类模板参数?

  15. 15

    当类型为参数时如何避免 typeid

  16. 16

    如何使用模板模板参数专门化类模板?

  17. 17

    如何确定从类模板继承的模板参数的基础模板类型?

  18. 18

    如何声明采用模板类参数的模板类

  19. 19

    模板类的模板参数

  20. 20

    如何在C ++中使用通用引用参数为模板类编写构造函数

  21. 21

    C ++ 20模板lambda:如何指定模板参数?

  22. 22

    C ++ 20模板lambda:如何指定模板参数?

  23. 23

    C ++ 20模板lambda:如何指定模板参数?

  24. 24

    如何使用类的类型作为模板的参数

  25. 25

    如何扩展可变参数模板类

  26. 26

    如何从类构造函数传递模板参数

  27. 27

    如何使用参数调用类模板函数

  28. 28

    如何告诉模板参数是从某个类派生的

  29. 29

    C ++动态向下转换到具有模板模板参数为类模板或别名模板的类模板

热门标签

归档