在类中使用结构时出错

时间:2013-03-25 23:54:25

标签: c++ class struct

我是C ++,IDE是Visual Studio 2012.我不知道为什么我不能这样做,根本没有任何意义。正如标题所说,我正在尝试将一个结构放在一个类中,但它根本不会让我这样做。我已经尝试将它放在公共场所,私有场所,受到保护,然后尝试将其置于全球范围内,并且没有任何作用。

class foobar
{
public:
    struct foo
    {
        int ass;
    };

    foo bar;
    bar.ass = 1; //getting a weird error on this line
};

我如何在类中放置结构?谢谢你的帮助

2 个答案:

答案 0 :(得分:9)

如果你要做的是在构造ass类型的对象时将1成员初始化为foo,那么在C ++ 11中你可以这样做:

class foobar
{
public:

    struct foo
    {
        int ass = 1;
    //          ^^^
    };

    foo bar;
};

您可以看到live example here

上面的语法等同于更详细的基于构造函数的初始化,它是C ++ 03中唯一选项 (也可能是版本的VS2012附带的VC11编译器,以not being fully compliant with the C++11 Standard}着称:

class foobar
{
public:

    struct foo
    {
        foo() : ass(1) { }
    //        ^^^^^^^^

        int ass;
    };

    foo bar;
};

答案 1 :(得分:5)

C ++不允许在类声明中初始化变量。 必须编写构造函数才能执行此操作。