相关疑难解决方法(0)

接口的解决方法

在C++中,我如何声明一个接口,我可以使用它,如下所示:

/** Enemy "Interface" */
Class Enemy {
    Enemy();
    virtual ~Enemy();
    virtual void doStuff() = 0;
};

/** Enemy of type 1 */
Class Enemy_type1 : public Enemy {
    Enemy_type1();
    virtual ~Enemy_type1();
    virtual void doStuff() {
        // different for every type of enemy
    }
};

/** Add an enemy to EnemyManager */
void EnemyManager::addEnemy(Enemy * e) {
    this->enemies.push_back(*e); // declared as vector<Enemy> enemies;
}
Run Code Online (Sandbox Code Playgroud)

c++ inheritance interface

0
推荐指数
1
解决办法
118
查看次数

C++ 上下文中的抽象和接口有什么区别?

C++ 中的接口被实现为抽象类,即纯虚方法。同样,C++中的抽象类也是同样的实现方式。我可以说接口和抽象在 C++ 中是相同的,除了接口可能是动词的概念 - 行为和抽象类是名词。我的理解对吗?我问这个问题是因为设计模式——以不同的方式谈论接口和抽象。另外,原因是JAVA有两个不同的关键字——interface和abstract。我们需要在java中实现一个接口。我们需要扩展抽象类。然而,在CPP中,我们只是继承抽象类,然后实现。

c++ design-patterns

0
推荐指数
1
解决办法
2641
查看次数

未定义的对象错误引用

#include <iostream>
#include <string>
using namespace std;

class Part{
public:
    std::string spec;
    Part(std::string str){
        this->spec = str;
    }
    std::string getSpec(){
        return spec;
    }
};

class Car{
public:
    Part getEngine();
    Part getWheels();
    Part getBody();
};


class Benz:public Car{
public:
    Part getEngine(){
        return Part("Benz Engine");
    }   
    Part getWheels(){
        return Part("Benz Wheels");
    }
    Part getBody(){
        return Part("Benz Body");
    }
};

class Audi:public Car{
public:
    Part getEngine(){
        return Part("Audi Engine");
    }   
    Part getWheels(){
        return Part("Audi Wheels");
    }
    Part getBody(){
        return Part("Audi Body");
    }
}; …
Run Code Online (Sandbox Code Playgroud)

c++ oop abstract-class class

0
推荐指数
2
解决办法
764
查看次数

如何在c ++中使用接口

我正在学习C++,我无法理解接口的工作原理.我设置了一个不起作用的小例子,我不明白我做错了什么.

我已经阅读了这个答案,这有助于我宣布界面,但(即使我仍然不完全理解声明)我现在关注的更多是关于用法.我也读过这个答案,但是,我仍然无法使用我的界面,请看这个例子:

shape.h

#ifndef SHAPE_H
#define SHAPE_H

class Shape
{
public:
    virtual ~Shape(){}
    virtual int getArea() = 0;
};

#endif // SHAPE_H
Run Code Online (Sandbox Code Playgroud)

rectangle.h

#ifndef RECTANGLE_H
#define RECTANGLE_H

#include "shape.h"

class Rectangle : public Shape
{
public:
    Rectangle(){}
    Rectangle(int w, int h) : width{w}, height{h} {}
    virtual int getArea();
private:
    int width = 0;
    int height = 0;
};

#endif // RECTANGLE_H
Run Code Online (Sandbox Code Playgroud)

rectangle.cpp

#include "rectangle.h"

int Rectangle::getArea()
{
    return width * height;
}
Run Code Online (Sandbox Code Playgroud)

weird.h

#ifndef WEIRD_H
#define …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
67
查看次数

ISO C++禁止在没有类型的情况下声明"..."

我收到cpp编译器的警告,我似乎无法解决.我想至少明白我做错了什么......

sketch\IRectangle.h:7:20:警告:ISO C++禁止声明'Rectangle'没有类型[-fpermissive]

矩形(INT,INT);

                ^
Run Code Online (Sandbox Code Playgroud)

头文件

#ifndef RECTANGLE_H
#define RECTANGLE_H

class IRectangle
{
public:
  Rectangle(int,int);
  void set_values (int,int);
  int area (void);

private:
  int width, height; 
};

#endif
Run Code Online (Sandbox Code Playgroud)

Rectangle实现

#include "IRectangle.h"

IRectangle::Rectangle(int width, int height)
{

}

void IRectangle::set_values (int a,int b)
{
}

int IRectangle::area()
{
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

谷歌搜索后,我遇到了这个这个线程,但我三重检查原型是否匹配,所以我真的无法弄清楚我做错了什么.

PS:在C++中用"I"加前缀接口是否可以?

c++

-1
推荐指数
1
解决办法
6339
查看次数