在C ++中访问嵌套类

时间:2013-08-15 12:37:04

标签: 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’

我如何做对?我尝试了一些但无法解决这些错误。

1 个答案:

答案 0 :(得分:6)

  

错误:'Car'没有命名类型

static Car* createCar()

汽车尚不清楚。将类Car的定义移到函数

之上
  

错误:'string'没有命名类型在函数'void useVehicle()'中:

#include <string>

还可以使用std::来限定string

  

错误:'createCar'不是'Vehicle'的成员

修复其他两个问题后,此错误将消失。编译器无法解析函数声明,因为它不知道它的返回类型是什么。