是否有方法为模板参数指定所需的定义
Is there a way to specify a required definition for template arguments?
是否允许我编写以下语法:
template <class T{public :SDL_Rect getRect() const; }>
这是为了确保模板参数将具有SDL_Rect getRect() const
然而,我得到了error: unexpected Type "T"
。如果我在语法上犯了错误,或者根本不允许这样做,有什么建议吗?
使用概念:
template<class T>
requires requires(const T t) {
{ t.getRect() } -> SDL_Rect;
}
class Meow { };
这检查了t.getRect()
是否可以隐式转换为SDL_Rect
。要检查是否完全匹配,
template<class T, class U> concept bool Same = std::is_same_v<T, U>;
template<class T>
requires requires(const T t) {
{ t.getRect() } -> Same<SDL_Rect>;
}
class Meow { };
这是为了确保模板类将具有
SDL_Rect getRect()
常量
如果你写一些类似的东西
template<typename T>
class MyClass {
void foo() {
T t;
SDL_Rect r = t.getRect();
}
};
如果CCD_ 6不提供CCD_。
如果你想得到更好的编译器错误消息,你可以使用static_assert
,例如:
template<typename T>
class MyClass {
static_assert(std::is_member_function_pointer<decltype(&T::getRect)>::value,
"T must implement the SDL_Rect getRect() const function");
void foo() {
T t;
SDL_Rect r = t.getRect();
}
};
编译器已经回答了您的问题:不,这是不允许的。
无论如何,您并没有在那里声明模板。看起来您正试图声明一个模板类,但语法完全错误。
最有可能的是,你只需要花一些时间学习模板,即像这样的网站http://www.tutorialspoint.com/cplusplus/cpp_templates.htm或者一本好书。
你说:
这是为了确保模板类将具有
SDL_Rect getRect() const
你在错误的地方使用了一些语法元素来实现这一点。
您要查找的代码是:
template <class T> class MyClass
{
public :
SDL_Rect getRect() const;
};
相关文章:
- 部分定义/别名模板模板参数
- 有没有办法使用 googletest 创建自定义参数生成器?
- 使用自定义参数的过载删除操作员
- C++ 默认参数的重新定义:参数 1 (矢量 2D)
- Cython:具有自定义参数类型的STD ::功能回调
- 让我们C++推断定义参数的类/命名空间的位置
- 将自定义参数传递到Qt/C++中的插槽
- 定义参数包扩展的"pattern",尤其是在函数调用中
- 使用自定义参数进行 QAction
- 具有未定义参数的私有副本构造函数
- Qt-具有自定义参数的可重用绘制函数
- 类型定义参数的重载
- 如何调用定义参数为空的函数
- 如何正确使用作为其他定义参数的定义?C++
- 框架的用户定义参数应该在哪里
- 带有自定义参数的Sendmessage /postmessage
- c++定义参数重载
- Boost c++ Phoenix用户定义参数的下标操作符[]错误
- 是否可以在预处理器中定义参数化列表?
- c++中可变的用户定义参数列表