Я столкнулся с этим вопросом в онлайн-тесте, которое я принимал. Задача состоит в том, чтобы изменить эту программу, чтобы избавиться от ошибок компиляции.Доступ к вложенному классу в C++
#include<iostream>
#include<iomanip>
class Vehicle
{
public:
static Car* createCar()
{
return new Car;
}
class Car
{
public:
string name;
};
private:
int seats;
};
void useVehicle()
{
Vehicle::Car *c = Vehicle::createCar();
c->name = "BMW";
}
int main(int argc, char *argv[])
{
useVehicle();
return 0;
}
сборниках ошибки как:
error: ‘Car’ does not name a type
error: ‘string’ does not name a type
В функции void useVehicle()
:
error: ‘createCar’ is not a member of ‘Vehicle’
Как я могу получить это право? Я пробовал несколько вещей, но не мог решить эти ошибки.
Будьте более конкретным в том, что вы пробовали и что произошло, когда вы это сделали. – chris
[Вот рабочая версия вашего кода] (http://coliru.stacked-crooked.com/view?id=b5a879f37c395a9f5701b9fbbee730f7-f674c1a6d04c632b71a62362c0ccfc51) –
Являются ли вложенные классы C++ 11? Я не видел их раньше на этом языке. – Panzercrisis