gpt4 book ai didi

C++,继承,虚拟

转载 作者:太空宇宙 更新时间:2023-11-04 16:15:58 28 4
gpt4 key购买 nike

我这里遇到了一些问题。我试图让我的代码像 java 中的接口(interface)一样工作。这个类被其他 2 个继承,因为它们导致了一些问题。而且我还想知道我是否做对了,以及改进我的代码的方法。我是新手。 看:

接口(interface)类:

#include <iostream>
#include <string>
class IZarzadzaniePozycjami{

public:
IZarzadzaniePozycjami(void);
~IZarzadzaniePozycjami(void);

public:
virtual void ZnajdzPozycjePoTytule();
virtual void ZnajdzPozycjePoId();
virtual void WypiszWszystkiePozycje();


};

#include "Pozycja.h"
#include "IZarzadzaniePozycjami.h"
#include <iostream>
#include <list>

继承自 IZarzadzanie... 类的目录类。

#include "Pozycja.h"
#include "IZarzadzaniePozycjami.h"
#include <iostream>
#include <list>

class Katalog : public IZarzadzaniePozycjami
{
private:
std::string dzialTematyczny;
public:
void ZnajdzPozycjePoTytule(std::string tytul);
void ZnajdzPozycjePoId(int id);
void WypiszWszystkiePozycje();
Katalog(void);
Katalog(std::string dzialTematyczny_);
void DodajPozycje(Pozycja);
std::list<Pozycja> lista;
friend bool operator==(const Katalog & kat, const std::string & s);
~Katalog(void);
};
inline bool operator==(std::string& s, Katalog& katalog)
{
return katalog == s;
}

然后是从接口(interface)继承的库类(biblioteka.h)

#include<iostream>
#include "IZarzadzaniePozycjami.h"
#include "Bibliotekarz.h"
#include "Pozycja.h"
#include "Katalog.h"

class Biblioteka :
public IZarzadzaniePozycjami
{
public:
Biblioteka(void);
~Biblioteka(void);
Biblioteka(std::string adres_);
void DodajBibliotekarza(Bibliotekarz);
void WypiszBibliotekarzy();
void DodajKatalog(Katalog);
void DodajPozycje(Pozycja p, std::string dzialTematyczny);

void ZnajdzPozycjePoTytule(std::string tytul);
void ZnajdzPozycjePoId(int id);
void WypiszWszystkiePozycje();
private: std::string adres;



};

这里有一些错误。很抱歉发了很长的帖子。不知道要切断什么。

c:\users\komputer\documents\visual studio 2012\projects\project1\izarzadzaniepozycjami.h(3): error C2011: 'IZarzadzaniePozycjami' : 'class' type redefinition
1> c:\users\komputer\documents\visual studio 2012\projects\project1\izarzadzaniepozycjami.h(3) : see declaration of 'IZarzadzaniePozycjami'
1>c:\users\komputer\documents\visual studio 2012\projects\project1\katalog.h(7): error C2504: 'IZarzadzaniePozycjami' : base class undefined
1>c:\users\komputer\documents\visual studio 2012\projects\project1\biblioteka.h(9): error C2504: 'IZarzadzaniePozycjami' : base class undefined
1> Generating Code...
1>c:\users\komputer\documents\visual studio 2012\projects\project1\katalog.cpp(16): warning C4717: 'operator==' : recursive on all control paths, function will cause runtime stack overflow

最佳答案

在所有头文件中使用#pragma once:

#pragma once

#include <iostream>
#include <string>
class IZarzadzaniePozycjami{

public:
IZarzadzaniePozycjami(void);
~IZarzadzaniePozycjami(void);
....

并确保在使用 IZarzadzaniePozycjami 之前包含 IZarzadzaniePozycjami 的 header 。

关于C++,继承,虚拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22598169/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com