在C 中继承类功能:一般问题,以更好地理解,如果有人可以指出我的错误

Inheriting a class function in C++ : general questions for better understanding and if someone can point out my mistakes

本文关键字:如果 错误 我的 更好 功能 继承 问题      更新时间:2023-10-16

,所以我正在学习C 并尝试一个小项目。同时,我有很多问题,但可以说谷歌搜索有所帮助。重点:我希望一堂课能够使用另一堂课的功能,我发现了类似的问题,并使用了我认为最适合我的情况的问题,但是,我仍然觉得我的代码或方法是错误的。另外,我还没有达到我想要代码做的事情。接下来的代码只是我原始项目的示例/副本,其中包括两个用于测试的类,并使读者和我本人尽可能简单。

class1.h:

#ifndef CLASS1_H
#define CLASS1_H
#include <string>
#include <vector>
class Class1 {
public:
    Class1();
    Class1(const Class1& orig);
    virtual ~Class1();
    void setPeople(std::string newPeople);
    std::string getPeople();
private:
    std::vector <std::string> people;
};
#endif

class1.cpp

#include "Class1.h"
#include <string>
#include <vector>
#include <cstdlib>
#include <iostream>
using namespace std;
Class1::Class1() {
}
Class1::Class1(const Class1& orig) {
}
Class1::~Class1() {
}
void Class1::setPeople(string newPeople){
    people.push_back(newPeople);
}
string Class1::getPeople(){
    vector<string>::iterator it = people.begin();
    cout<<*it<<endl;
}

class2.h

#ifndef CLASS2_H
#define CLASS2_H
#include "Class1.h"
#include <string>
class Class2:
public Class1 {
public:
    Class2();
    Class2(const Class2& orig);
    virtual ~Class2();
    void setName(std::string newName);
    std::string getName();
private:
    std::string name;
};
#endif

class2.cpp

#include "Class1.h"
#include "Class2.h"
#include<string>
#include<vector>
using namespace std;
Class2::Class2() {
}
Class2::Class2(const Class2& orig) {
}
Class2::~Class2() {
}
void Class2::setName(string newName){
    name=newName;
    setPeople(name);
}
string Class2::getName(){
}

main.cpp

#include <cstdlib>
#include <iostream>
#include <string>
#include "Class1.h"
#include "Class2.h"
using namespace std;
int main(int argc, char** argv) {
    Class1 one;
    Class2 two;
    two.setName("Random name");
    two.getPeople();
    return 0;
}

因此,每次我使用class2函数 setName(string newname)我希望它传递值 name name 到Class1函数 setPeople(String newPeople),因此将其存储到 vector People ,然后能够打印使用 GetPeople()的结果(我知道GetPeople中的代码仅在矢量的第一个字符串上打印)。我不知道我的方法是否正确,但是当我在MAIN中调用 twe.getPeople()二。但是,我不应该也能够使用 one.getPeople()获得完全相同的结果吗?在我的情况下,它不起作用,只是一个空字符串。因此,我要么对继承的工作方式有错误的承诺,要么在我的代码中出现了问题。如果有人有时间解释我的方法是否正确以及为什么我的最终目标无法按预期或我做错了什么以及我应该使用什么技术。

,我将非常感谢。

我想知道为什么要把它放入两个类,但是我想这是否是学习的并不重要。

我通常不编码C ,但是C,但是我觉得您可以有多种解决此问题的方法。我会给您一些想法,希望这会导致您选择您喜欢的方法,或者想到自己的方法。

您可以:1)具有两个类都使用的全球向量(通常不建议使用全球,但可能是可能的。)2)在课堂上有一个课程,这样,父母可以访问子类。(您可以将矢量存储在孩子中,并从父母那里阅读。)3)制作1个班级,其中包含您需要的所有内容。4)将矢量公开而不是私人成员,因此可以从主/其他对象访问它。(如果使用此功能,请确保将指针从1类传递到另一个数据,这将更有效,然后实际上在类之间来回复制数据)

,应该有无数的其他方法来解决此问题。

在另一个音符上,我看到很多人一次使用#pragma,而不是#ifndef Header_h #define Muck。我在C中使用这些定义,我不确定#Pragma是否曾经完全一样,但是可以结帐可能很不错。每次制作标头文件时,都会保存一些打字:)

(我没有给出代码示例,正如您所说的那样,您想学习,祝您好运:D)

相关文章: