C++ 在TI编译器中使用定义类型的成员

C++ 在TI编译器中使用定义类型的成员,c++,texas-instruments,C++,Texas Instruments,我有一个类似这样的类: class In { public: struct Member{ In name; }; In() {} private: static const int aCapacity = 16; static const int oCapacity = 16; }; 当我试图编译它时,我得到一个错误:error\71:不允许不完整的类型 此代码使用Microsoft编译器编译。想知道是否有人知道一种方法,使这项工作为TI

我有一个类似这样的类:

class In {
public:
  struct Member{
    In name;
  };

    In() {}

private:    
    static const int aCapacity = 16;
    static const int oCapacity = 16;
};
当我试图编译它时,我得到一个错误:
error\71:不允许不完整的类型

此代码使用Microsoft编译器编译。想知道是否有人知道一种方法,使这项工作为TI

除此之外,TI使用GCC 4.8.3


顺便说一句,实际的类是一个模板,但我很确定这不是问题。

这不应该编译:编译器无法推断
成员的布局,因为它还没有在
中解析整个类

只需声明嵌套的
结构
,并在
中的
定义之后定义它:

class In {
public:

    struct Member;

    In() {}

private:    
    static const int aCapacity = 16;
    static const int oCapacity = 16;
};

struct In::Member{
    In name;
 };

谢谢你的快速回复。虽然这解决了所描述的问题,但显然只有当member的name成员(需要为我的示例选择更好的名称)不能在类中的任何位置引用时,它才起作用。这个问题的有趣之处在于,Microsoft编译器确实编译了这个。我认为这是因为它进行了多次编译。如果没有更好的答案,我会将此标记为答案,但我想等待其他回答。@PatrickO'Hara:您可以,在定义了
struct In::Member{…}
中的
struct之后,定义需要使用的函数,最后我把它们改成了指针,这显然也解决了这个问题。