在类中使用'typedef struct'

时间:2019-04-15 09:01:12

标签: c++

我试图以这种方式在类中使用'typedef struct'。 你能期待我想要的吗? 如您所见,这似乎是不可能的。 真的不可能吗?

class CTestStructure
{
public:
    typedef struct stTestInClass;
    StTestInClass   mmm;    // Compile error C3646
};

struct CTestStructure::stTestInClass
{
    int i;
}StTestInClass;

int main()
{
    CTestStructure testStructure;
}

2 个答案:

答案 0 :(得分:3)

首先,您不需要typedef用于结构。 structclass相同,但是默认为public访问。

第二,要能够定义非指针或非引用变量,您需要类型(结构)的完整定义。

自然的解决方案是简单地在类中内联定义结构:

class CTestStructure
{
public:
    struct stTestInClass
    {
        int i;
    };

    stTestInClass   mmm;
};

答案 1 :(得分:1)

您可以做到,但是在C ++中,不需要像在C中那样对结构使用typedef(以摆脱“ struct”关键字)。那里的问题是您拥有一个类型为StTestInClass的成员,这是一个匿名类型(您只提到它的名称,这只是一个没有定义的声明)。您可以通过这种方式使用它,但是您的成员必须是指向StTestInClass对象的指针并在以后的其他地方定义该结构,或者可以在使用它之前定义StTestInClass结构,并像以前一样在类中拥有类型为StTestInClass的成员。 / p>