VS2010中奇怪地重复出现模板模式错误
Curiously Recurring Template Pattern Bug in VS2010?
为什么不在VS2010中编译此代码?
struct Base
{
void foo0() { }
};
template<typename BASE> struct Derived : BASE
{
void foo1() { foo0(); }
};
int main()
{
Derived<Base> ddd;
ddd.foo1();
return 0;
}
它在其他编译器中编译得很好。如果我在下面的帮助下调用foo0,它也会编译:this->foo0();
我刚刚发现这种行为背后的原因是语言扩展编译器选项(/Za)。所以,若语言扩展被禁用,上述代码将无法编译。奇怪的是,这一定是C++语言的一部分,而不是MS语言扩展。
希望这能帮助到别人。。。
在声明Derived<BASE>::foo1()
时,它不知道BASE
是什么。然后它试图弄清楚foo0
是什么。视图中没有foo0
——或者更糟的是,它找到了一个全局foo0
来调用。这是一个错误。
当您改为调用this->foo0()
时,您会通知编译器您希望将其作为一个方法来查找。
相关文章:
- 以只读模式打开数据库时SQLITE_CANTOPEN错误
- _mm256_load_ps调试模式下导致谷歌/基准测试的分段错误
- 删除使数据处于"错误状态"的默认构造函数的模式?
- 我们在批处理模式下使用 G++ 时遇到错误
- 在调试模式下编译时qrc_resource.cpp错误
- wchar 模式下 pugixml 的链接错误
- 我在发布模式下运行时收到"Access violation reading location"错误 - C++
- Eclipse:错误:初始化模式失败(无法连接到目标)
- Gta 5 脚本错误与上帝模式
- 装饰器设计模式,分段错误
- 调试模式下的dlib静态lib错误
- 混合模式程序集是针对版本 'v2.0.50727' 构建的 ...本机C++/Visual C++/C# 项目错误
- OpenCV C++ 正弦模式生成错误 - structured_light库
- 为什么将好奇模板模式的基类直接转换为另一个基类是错误的?
- VS2010中奇怪地重复出现模板模式错误
- C++和Qt:观察者模式错误
- 发布模式错误,但不在调试模式下
- 状态设计模式:错误处理
- ODB c++ -未知的数据库模式错误
- Singleton模式c++错误