Вопрос: Почему анонимный объект анонимных классов не разрешен в Visual C ++ 17?
Разрешены анонимные объекты (в данном случае я думаю, что это временно):
class Foo
{
public:
virtual int bar() = 0;
};
int main()
{
class ConcreteFoo : public Foo
{
public:
int bar() override
{
//some operation
}
};
ConcreteFoo{}.bar();
return 0;
}
Разрешены анонимные занятия:
int main()
{
class : public Foo
{
public:
int bar() override
{
//some operation
}
} myFoo;
myFoo.bar();
return 0;
}
Оба вместе не допускаются:
int main()
{
class : public Foo
{
public:
int bar() override
{
//some operation
}
}{}.bar();
return 0;
}
Почему бы и нет? я использую Visual C ++ 17.
Ошибки:
1>c:\users\peter\downloads\nationsgamemockup\nationsgamemockup\nationsgamemockup.cpp(37): warning C4094: untagged 'class' declared no symbols
1>c:\users\peter\downloads\nationsgamemockup\nationsgamemockup\nationsgamemockup.cpp(37): error C2143: syntax error: missing ';' before '{'
1>c:\users\peter\downloads\nationsgamemockup\nationsgamemockup\nationsgamemockup.cpp(37): error C2059: syntax error: '.'
Задача ещё не решена.
Других решений пока нет …