-9

我在 C++ 中,IDE 是 Visual Studio 2012。我不知道为什么我不能这样做,这根本没有意义。正如标题所说,我试图在一个类中放置一个结构,但它根本不允许我这样做。我尝试将其置于公共、私有、受保护的范围内,然后尝试将其置于全局范围内,但没有任何效果。

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

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

我如何将一个结构放在一个类中?感谢您的帮助

4

2 回答 2

9

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

class foobar
{
public:

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

    foo bar;
};

你可以在这里看到一个活生生的例子

上述语法等价于更冗长的基于构造函数的初始化,这是C++03中的唯一选项 (也可能在 VS2012 附带的 VC11 编译器版本中,它以不完全符合C++11 标准):

class foobar
{
public:

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

        int ass;
    };

    foo bar;
};
于 2013-03-25T23:56:04.847 回答
5

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

于 2013-03-25T23:56:16.477 回答