首页 > 解决方案 > 如何用子类对象初始化超类类型的指针?

问题描述

我正在尝试通过以下方式初始化指针:

Space* a = new GO();

GO的子类在哪里Space。这是我的代码:

空间.h

#include <iostream>
#include <string>
    
class Space
{
protected:
std::string name;
    
public:
Space ();
Space (std::string new_name);
std::string get_name ();
};

空间.cpp

#include <string>
#include <vector>
#include <iostream>
#include "Space.h"
Space::Space(){}
Space::Space(std::string new_name):
    name(new_name){}

std::string Space::get_name() {
    return name;
}

GO.h

#include "Space.h"
class GO:public Space{
  public:
  GO();
};

去.cpp

#include "GO.h"
GO::GO()
    :Space("Go")
{}

我收到错误:

'GO' 之前的预期类型说明符

初始化时无法将“int*”转换为 Space*

预期 ',' 或 ';' 在“开始”之前

如何修复这些错误?有没有更好的方法来声明这样的指针?

标签: c++

解决方案


推荐阅读