它告诉我这里有一个分段错误:
class Atelier /* Director qui va executer les méthodes du monteur */
{
private:
MonteurVoiture *_monteur;
public:
Voiture* doTheJob();
Atelier(MonteurVoiture *mont);
};
int main()
{
MonteurVoiture *monteur=MonteurVoiture::instanceVoiture("luxe");
Atelier a(monteur);
cout << a.doTheJob() << endl;
return 0;
}
没有cout << a.doTheJob() << endl;
它就可以了。如果我将其替换为 cout << "ok"; 没关系。所以分段错误来自这种方法。
Atelier::Atelier(MonteurVoiture *mont) { _monteur=mont; }
Voiture* Atelier::doTheJob()
{
_monteur->createVoiture();
_monteur->addPortiere();
_monteur->addSiege();
return _monteur->getVoiture();
}
类 Voiture
class Voiture
{
private:
std::string portiere;
std::string siege;
public:
void setPortiere(std::string p);
void setSiege(std::string s);
friend std::ostream &operator<<(std::ostream &o,const Voiture *v);
};
和 MonteurVoiture 类
class MonteurVoiture
{
protected:
Voiture *v;
public:
~MonteurVoiture();
Voiture* createVoiture();
Voiture* getVoiture();
virtual void addPortiere() =0;
virtual void addSiege() =0;
static MonteurVoiture* instanceVoiture(std::string type);
};
Voiture* MonteurVoiture::createVoiture() { return new Voiture(); }
Voiture* MonteurVoiture::getVoiture() { return v; }
提前致谢