1

我在启用标志 -std=c++11 的 gcc 4.8 中有一个简短的问题。我可以做到这一点,而且效果很好。

class Test;
class StupidClass {

public:
    StupidClass(Test *test) {}
};

class Test {
    StupidClass c = StupidClass(/*this is the part in question*/ this);
};

我想知道这是否是有效的 c++11 在像这样的类内成员初始化中具有“this”。

4

2 回答 2

1

如果你写

struct Foo
{
    Bar bar { this };
};

这与以下内容没有什么不同:

struct Foo
{
    Foo() : bar(this) { }
    Bar bar;
};

因此,如果第二个有意义,那么第一个也有意义。

于 2013-12-10T09:29:15.597 回答
1

它是有效的,但你需要小心,因为这还不是完全有效的。存储指针或引用很好,使用在接收它之前声明的成员也很好。

于 2013-12-10T09:34:48.353 回答