инициализация члена класса C ++ 11 с этим

У меня быстрый вопрос в gcc 4.8 с включенным флагом -std = c ++ 11.
Я могу сделать это, и это отлично работает.

class Test;
class StupidClass {

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

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

и я хотел бы знать, действительно ли это в c ++ 11, имеющем «this» при инициализации члена класса, подобной этой.

1

Решение

Если ты пишешь

struct Foo
{
Bar bar { this };
};

это ничем не отличается от:

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

Так что, если второе имеет смысл, то и первое.

1

Другие решения

это допустимо, но вы должны быть осторожны, так как это еще не полностью верно. Хранение указателя или ссылки — это хорошо, использование члена, объявленного до того, как получатель это тоже хорошо.

1

По вопросам рекламы [email protected]