-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

あなたがしようとしているのは、 type のオブジェクトを構築assするときにメンバーをに初期化することである場合、C++ 11 では次のように行うことができます。1foo

class foobar
{
public:

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

    foo bar;
};

ここで実際の例を見ることができます。

上記の構文は、C++03の唯一のオプションである、より詳細なコンストラクター ベースの初期化と同等です (また、VS2012 に完全に準拠していないことが知られている 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 に答える