错误:'< ...>'的声明。奇怪的编译器错误

时间:2013-08-16 18:44:12

标签: c++ templates gcc compiler-errors declaration

请帮我理解gcc编译器输出。我完全糊涂了。

我有一个错误:

C/types.h:47:56: error: declaration of 
'struct VV::MM<VV::SSS::Vector<short unsigned int>, 8u, 0u>'

对我来说这听起来很奇怪。

在types.h:47中,我看到了:

template<typename V, size_t Size1, size_t Size2> class MM;

这对我来说没问题。

这是构建日志中的第二条错误消息,我想知道它只是第一个错误的第二部分吗?这里第一个和第二个错误在一起:

<... compiles normally, no errors ...>

In file included from A/T.h:14:0,
                 from B/I.h:5,
                 from B/F.cxx:54:
A/AArray.h: In instantiation of 
'AInternal::AlignedData<VV::MM<VV::SSS::Vector<short unsigned int>, 8u, 0u>, 104u, 0>':
A/AArray.h:561:125:   instantiated from 
'AFArray<VV::MM<VV::SSS::Vector<short unsigned int>, 8u, 0u>, AArraySize<104u> >'
A/V.h:73:99:   instantiated from here
A/AArray.h:364:20: error: 'AInternal::AlignedData<T, Size, 0>::fArray' 
  has incomplete type

C/types.h:47:56: error: declaration of 
'struct VV::MM<VV::SSS::Vector<short unsigned int>, 8u, 0u>'

In file included from <...other errors...>

在A / V.h:73我有:

 AFArray<VV::SSS::Vector<short unsigned int>::MM, AAArraySize<N> > fAlpha;

我认为可以在日志中触发第二行:

A/AArray.h: In instantiation of 
'AInternal::AlignedData<VV::MM<VV::SSS::Vector<short unsigned int>, 8u, 0u>, 104u, 0>':

因为VV :: SSS :: Vector :: MM是未定义的类型,因为第二个错误。

所以我有两个问题:

  1. 第二条错误消息是否是第一个错误的一部分?
  2. 这个宣言有什么不妥?

1 个答案:

答案 0 :(得分:0)

问题是我丢失了文件,其中描述了已定义的MM类。已找到文件并添加到包含错误消失的路径。

我的问题的答案:

  

第二条错误消息是否是第一个错误的一部分?

是。它看起来如此。

  

这个宣言有什么不妥?

没有错,编译器只是告诉与错误声明相关的内容。