在C 中继承类功能:一般问题,以更好地理解,如果有人可以指出我的错误
Inheriting a class function in C++ : general questions for better understanding and if someone can point out my mistakes
,所以我正在学习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)
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- C++如果采用类类型的函数被传递派生类型,有没有办法给出错误?
- 如果用户没有输入任何内容或输入错误,如何重新输入用户的输入?
- 如何用 C 编译,但如果使用任何C++,则会抛出错误?
- C++:如果括号为空,为什么不抛出错误对象?
- C++OpenSSL RSA_free如果也使用EVP_PKEY_free,则会给出分段错误
- 自定义runtime_error,如果我在 #what 中使用#c_str(),则错误输出始终为空
- 如果语句错误地读取字符串,则始终在第一个条件返回
- 如果在 C++ 构造函数中以错误的顺序初始化对象数据,会发生什么类型的错误
- 如果我不使用"新"关键字,为什么会出现细分错误?
- 我如何在一个 if 语句中声明所有数字我尝试通过其他方式声明所有数字,如果一个接一个,但似乎代码有逻辑错误
- 如果用户输入的字符过多,则创建错误消息
- C++代码在 for 循环的条件下给出运行时错误,而如果它被具有相同意义的代码替换,则编译正确
- 如果 return 语句在带括号的循环中,错误可能会到达非 void 函数的末尾,但不会显示在没有括号的循环的情况下
- PC 林特,错误 613 和 "complicated" 如果
- C++如果调用 vector,矢量分割错误会导致崩溃
- 如果结果为假,再次检查如何导致更多错误的结果?
- 找不到 windows.winmd – 如果指定了路径,错误会乘以
- 如果发生错误,则返回错误值,否则,继续执行函数
- 布尔值,如果错误,请重复某些功能