【发布时间】:2008-11-06 15:21:20
【问题描述】:
template <class M, class A> class C { std::list<M> m_List; ... }
上面的代码可以吗?我希望能够做类似的事情。
为什么我问是我收到以下错误:
Error 1 error C2079: 'std::_List_nod<_Ty,_Alloc>::_Node::_Myval' uses undefined class 'M' C:\Program Files\Microsoft Visual Studio 9.0\VC\include\list 41
【问题讨论】:
-
我的应用程序出现此错误。错误 1 错误 C2079: 'std::_List_nod<_ty>::_Node::_Myval' 使用未定义的类 'M' C:\Program Files\Microsoft Visual Studio 9.0\VC\include\list 41
-
那么也许您应该改写您的问题以在其中包含此错误(因为您提供的代码完全有效)。
-
显示更多代码。这在 VC9 中编译得很好。刚试了一下。 #include
- 模板
class C { std::list m_List; }; -
正如@xtofl 和@Joe Corkery 下面提到的,您遇到的错误可能是因为 std::list 在实例化 C 时需要 M 的完整定义。我同意@Baxissimo:如果您在使用 C 的地方添加代码,您将获得更好的帮助。
标签: c++ oop visual-c++ templates