如何通过接口初始化一个类

问题描述 投票:0回答:0

我有一个使用接口 (MyClassInterface) 访问的 C++ 类 (MyClass)。该类将被编译成库,接口将用作头文件。

我的问题是初始化类。这是将更好地解释的代码:

// myclassinterface.h
#ifndef MYINTERFACE_H
#define MYINTERFACE_H

class MyClassInterface
{
public:
    virtual void sayHello() = 0;
};

#endif
// myclass.h
#ifndef MYCLASS_H
#define MYCLASS_H
#include "myclassInterface.h"

class MyClass : MyClassInterface
{
public:
    void sayHello();
};

#endif 
// myclass.cpp
#include "myclass.h"
#include <iostream>

void MyClass::sayHello()
{
    std::cout << "Hello from MyClass!" << std::endl;
}
// main.cpp
#include <iostream>
#include "myclassinterface.h"

int main()
{
    MyClassInterface *myClass = new MyClass(); // This doesn't compile ( error: expected type-specifier before 'MyClass')

    myClass->sayHello();
    delete myClass;
    return 0;
}

我应该如何实例化类?

我也试过: MyClassInterface *myClass = new MyClassInterface(); (错误:抽象类类型“MyClassInterface”的无效新表达式)

c++ gnu
© www.soinside.com 2019 - 2024. All rights reserved.