Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C+中继承类函数+;:一般问题,以便更好地理解,以及是否有人能指出我的错误 所以我正在学习C++,尝试一个小项目。在此期间,我有很多问题,但让我们说谷歌搜索有点帮助。切中要害:我希望一个类能够使用另一个类的函数,我发现了类似的问题,并使用了我认为最适合我的情况的方法,但我仍然觉得我的代码或方法是错误的。此外,我也没有完全实现我希望代码实现的功能。下面的代码只是我的原始项目的一个示例/副本,只包含两个用于测试的类,以使读者和我自己的事情尽可能简单_C++_Inheritance - Fatal编程技术网

在C+中继承类函数+;:一般问题,以便更好地理解,以及是否有人能指出我的错误 所以我正在学习C++,尝试一个小项目。在此期间,我有很多问题,但让我们说谷歌搜索有点帮助。切中要害:我希望一个类能够使用另一个类的函数,我发现了类似的问题,并使用了我认为最适合我的情况的方法,但我仍然觉得我的代码或方法是错误的。此外,我也没有完全实现我希望代码实现的功能。下面的代码只是我的原始项目的一个示例/副本,只包含两个用于测试的类,以使读者和我自己的事情尽可能简单

在C+中继承类函数+;:一般问题,以便更好地理解,以及是否有人能指出我的错误 所以我正在学习C++,尝试一个小项目。在此期间,我有很多问题,但让我们说谷歌搜索有点帮助。切中要害:我希望一个类能够使用另一个类的函数,我发现了类似的问题,并使用了我认为最适合我的情况的方法,但我仍然觉得我的代码或方法是错误的。此外,我也没有完全实现我希望代码实现的功能。下面的代码只是我的原始项目的一个示例/副本,只包含两个用于测试的类,以使读者和我自己的事情尽可能简单,c++,inheritance,C++,Inheritance,类别1.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 getP

类别1.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
\ifndef CLASS1\u H
#定义类别1_H
#包括
#包括
一班{
公众:
类别1();
类别1(常数类别1和初始值);
虚拟~Class1();
void setPeople(std::string newPeople);
std::string getPeople();
私人:
性病患者;
};
#恩迪夫
类别1.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;
}
#包括“Class1.h”
#包括
#包括
#包括
#包括
使用名称空间std;
Class1::Class1(){
}
Class1::Class1(常量Class1和原始){
}
Class1::~Class1(){
}
void Class1::setPeople(字符串newPeople){
人。推回(新人);
}
字符串Class1::getPeople(){
vector::iterator it=people.begin();

我想知道你为什么要把它分为两节课,但我想如果它是一个学习练习,那也没什么关系

<>我通常不编码C++,但是我觉得你可以用多种方法来解决这个问题。我会给你一些想法,希望这会让你选择一种你喜欢的方法,或者自己想想。< /P> 你可以: 1) 拥有两个类都使用的全局向量(通常不建议使用全局向量,但这是可能的。) 2) 在类中有一个类,这样父类就可以访问子类。(您可以将向量存储在子类中,并从父类读取它。) 3) 制作一个包含你需要的所有内容的类。 4) 将向量设置为公共成员而不是私有成员,以便可以从主/其他对象访问它。(如果使用此选项,请确保将指针从一个类传递到另一个类的数据,这样比在类之间来回复制数据更有效)

应该有无数其他的方法来解决这个问题

另一方面,我看到很多人使用过一次#pragma,而不是#ifndef HEADER#u H#define muck。我在C中使用了这些定义,我不能100%确定#pragma一次是否完全相同,但检查一下可能会很好。每次创建头文件时都会保存一些键入:)


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

我想知道您为什么要将其分为两个类,但我认为这是否是一个学习练习并不重要

<>我通常不编码C++,但是我觉得你可以用多种方法来解决这个问题。我会给你一些想法,希望这会让你选择一种你喜欢的方法,或者自己想想。< /P> 你可以: 1) 拥有两个类都使用的全局向量(通常不建议使用全局向量,但这是可能的。) 2) 在类中有一个类,这样父类就可以访问子类。(您可以将向量存储在子类中,并从父类读取它。) 3) 制作一个包含你需要的所有内容的类。 4) 将向量设置为公共成员而不是私有成员,以便可以从主/其他对象访问它。(如果使用此选项,请确保将指针从一个类传递到另一个类的数据,这样比在类之间来回复制数据更有效)

应该有无数其他的方法来解决这个问题

另一方面,我看到很多人使用过一次#pragma,而不是#ifndef HEADER#u H#define muck。我在C中使用了这些定义,我不能100%确定#pragma一次是否完全相同,但检查一下可能会很好。每次创建头文件时都会保存一些键入:)


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

为什么您认为
one.getPeople()
应该给出相同的结果?您从来没有在
one
中添加过名称
string Class1::getPeople(){vector::iterator it=people.begin()你认为
two
继承自
one
所以
one
应该是
two
影响的实例吗?@NathanOliver是的,我认为会是这样的,所以这是错误的,我不能用一个来获得相同的结果。@Nick不,你不能。
two
有自己的
实例Class1与它捆绑在一起。影响它的唯一方法是通过
two
one
是它自己的独立实例,并且完全独立于
two
。为什么你认为
one.getPeople()
应该给你同样的结果?你从来没有给
one
添加过名称
字符串Class1::getPeople()){vector::iterator it=people.begin()你认为
two
继承自
one
所以
one
应该是
two
影响的实例吗?@NathanOliver是的,我认为会是这样的,所以这是错误的,我不能用一个来获得相同的结果。@Nick不,你不能。
two
有自己的
实例Class1与它捆绑在一起。影响它的唯一方法是通过
two
one
是它自己的独立实例,并且完全独立于
two
。非常感谢您,我真的非常感谢您的时间!我想我将尝试其中的每一个(这确实是为了学习,只是当我试图思考一个要练习的项目时,我脑子里突然闪现出一些想法)!再次非常感谢:)很高兴看到人们这样做:)我只是做了一些结构,里面有空函数指针,看看我是否可以绑定多个函数
#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
#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(){

}
#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;
}