我试图以这种方式在类中使用'typedef struct'。 你能期待我想要的吗? 如您所见,这似乎是不可能的。 真的不可能吗?
class CTestStructure
{
public:
typedef struct stTestInClass;
StTestInClass mmm; // Compile error C3646
};
struct CTestStructure::stTestInClass
{
int i;
}StTestInClass;
int main()
{
CTestStructure testStructure;
}
答案 0 :(得分:3)
首先,您不需要typedef
用于结构。 struct
与class
相同,但是默认为public
访问。
第二,要能够定义非指针或非引用变量,您需要类型(结构)的完整定义。
自然的解决方案是简单地在类中内联定义结构:
class CTestStructure
{
public:
struct stTestInClass
{
int i;
};
stTestInClass mmm;
};
答案 1 :(得分:1)
您可以做到,但是在C ++中,不需要像在C中那样对结构使用typedef(以摆脱“ struct”关键字)。那里的问题是您拥有一个类型为StTestInClass的成员,这是一个匿名类型(您只提到它的名称,这只是一个没有定义的声明)。您可以通过这种方式使用它,但是您的成员必须是指向StTestInClass对象的指针并在以后的其他地方定义该结构,或者可以在使用它之前定义StTestInClass结构,并像以前一样在类中拥有类型为StTestInClass的成员。 / p>