我在一个在线测试中遇到了这个问题。任务是改变这个程序以摆脱编译错误。
#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’
我如何做对?我尝试了一些但无法解决这些错误。
答案 0 :(得分:6)
错误:'Car'没有命名类型
点
static Car* createCar()
汽车尚不清楚。将类Car
的定义移到函数
错误:'string'没有命名类型在函数'void useVehicle()'中:
#include <string>
还可以使用std::
来限定string
错误:'createCar'不是'Vehicle'的成员
修复其他两个问题后,此错误将消失。编译器无法解析函数声明,因为它不知道它的返回类型是什么。