У меня быстрый вопрос в 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» при инициализации члена класса, подобной этой.
Если ты пишешь
struct Foo
{
Bar bar { this };
};
это ничем не отличается от:
struct Foo
{
Foo() : bar(this) { }
Bar bar;
};
Так что, если второе имеет смысл, то и первое.
это допустимо, но вы должны быть осторожны, так как это еще не полностью верно. Хранение указателя или ссылки — это хорошо, использование члена, объявленного до того, как получатель это тоже хорошо.