我是C ++,IDE是Visual Studio 2012.我不知道为什么我不能这样做,根本没有任何意义。正如标题所说,我正在尝试将一个结构放在一个类中,但它根本不会让我这样做。我已经尝试将它放在公共场所,私有场所,受到保护,然后尝试将其置于全球范围内,并且没有任何作用。
class foobar
{
public:
struct foo
{
int ass;
};
foo bar;
bar.ass = 1; //getting a weird error on this line
};
我如何在类中放置结构?谢谢你的帮助
答案 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 ++不允许在类声明中初始化变量。 必须编写构造函数才能执行此操作。