vector + inheritance的用法

时间:2014-05-30 19:21:03

标签: c++ inheritance vector

我想做的是将一个对象添加到我的obiektGeometryczny向量中,该向量将是一个Manipulator或kwadrat类型。 我希望“przeszkoda”成为机械手或kwadrat(波兰方形)类型的障碍。 我试过用:

obiektGeometryczny.push_back(new Manipulator());

但它返回:

src/scena.cpp:71:36: error: expected type-specifier before ‘*’ token
   obiektGeometryczny.push_back(new *Manipulator);

以下是代码:

scena.hh

#ifndef SCENA_HH
#define SCENA_HH
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <unistd.h> 
#include <vector>
#include "manipulator.hh"
#include "kwadrat.hh"
#include "przeszkoda.h"


class scena{
        vector<przeszkoda*> obiektGeometryczny;
public:
        scena(int argc, char *argv[]);
};
#endif

przeszkoda.hh

#ifndef PRZESZKODA_HH
#define PRZESZKODA_HH

class przeszkoda{
    virtual void czyPrzeciecie() {;};
};
#endif

manipulator.hh

#ifndef MANIPULATOR_HH
#define MANIPULATOR_HH
#include "przeszkoda.hh"

class Manipulator : public przeszkoda
{
        void czyPrzeciecie();
};
#endif

kwadrat.hh

#ifndef KWADRAT_HH
#define KWADRAT_HH
#include "przeszkoda.hh"

class kwadrat : public przeszkoda
{
        void czyPrzeciecie();
};
#endif

1 个答案:

答案 0 :(得分:0)

这不是最小的例子 - 还有一些你没有告诉我们的东西。您发布的代码是可以的 - 尝试简化您的案例,因为这样的事情可以正常工作:

#include <vector>
using namespace std;

class A {
    int x;
};

int main(void) {
    vector<A*> v;
    v.push_back(new A());
    return 0;
}