c++ - CRTP 看不到派生类中定义的结构
问题描述
在尝试使用 CRTP 时,我遇到了一些我不理解的行为。
template<class This>
struct Base
{
typename This::Event getEvent() { return {}; }
};
struct Derived : Base<Derived>
{
struct Event { };
};
int main()
{
auto x = Derived();
auto event = x.getEvent();
}
我收到错误
sketch2.cpp:5:24: error: no type named 'Event' in 'Derived'
typename This::Event getEvent() { return {}; }
~~~~~~~~~~~~~~~^~~~~
但它应该解析为Derived::Event
,这是定义明确的,不是吗?基类的方法是否可以像这样依赖于派生类中定义的类型?
解决方案
推荐阅读
- uwp - UWP 拦截 Webview 请求并添加标头
- javascript - 如何连接多条贝塞尔曲线?
- r - R Rstudio 使用来自多台计算机的 Git(未启用拉/按钮)
- ruby-on-rails - 参数数量错误(给定 1,预期为 0) - CommerceController#receive 中的 ArgumentError
- php - 只返回没有 html 标签的 php 数据
- mysql - 创建每个值最多出现一次的表
- c - 等待另一个进程
- java - JEXL:如何自定义属性访问器
- php - 如何使用 Codeigniter 框架自动生成代码?为会员卡生成会员号的示例
- python - VSCode在python中调试期间忽略断点