Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.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++;如何基于同一类型临时对象的值对派生类对象进行签名? Class-Dad{ 公众: 爸爸(); Dad(char v){Dad_值=v;} 私人: char-Dad_值; }; 班级儿童:公共爸爸{ 公众: Child(); Child(短v1,短v2,字符v):Dad(v){Child_v1=v1;Child_v2=v2;} 私人: 短int Child_v1; 短int Child_v2; }; //--------------------------------------- //定义子数组: 儿童bd[100]; 对于(int i=0;i_C++ - Fatal编程技术网

C++ c++;如何基于同一类型临时对象的值对派生类对象进行签名? Class-Dad{ 公众: 爸爸(); Dad(char v){Dad_值=v;} 私人: char-Dad_值; }; 班级儿童:公共爸爸{ 公众: Child(); Child(短v1,短v2,字符v):Dad(v){Child_v1=v1;Child_v2=v2;} 私人: 短int Child_v1; 短int Child_v2; }; //--------------------------------------- //定义子数组: 儿童bd[100]; 对于(int i=0;i

C++ c++;如何基于同一类型临时对象的值对派生类对象进行签名? Class-Dad{ 公众: 爸爸(); Dad(char v){Dad_值=v;} 私人: char-Dad_值; }; 班级儿童:公共爸爸{ 公众: Child(); Child(短v1,短v2,字符v):Dad(v){Child_v1=v1;Child_v2=v2;} 私人: 短int Child_v1; 短int Child_v2; }; //--------------------------------------- //定义子数组: 儿童bd[100]; 对于(int i=0;i,c++,C++,您还需要在Dad类中声明一个操作符=(Dad&other){…}。然后从您的子类调用它。如下所示: Class Dad{ public: Dad(); Dad(char v){Dad_value = v;} private: char Dad_value; }; class Child :public Dad{ public: Child(); Child(short v1, shor

您还需要在
Dad
类中声明一个
操作符=(Dad&other){…}
。然后从您的子类调用它。如下所示:

Class Dad{

    public:
        Dad();
        Dad(char v){Dad_value = v;}

    private:
        char Dad_value;
};

class Child :public Dad{

    public:
        Child();
        Child(short v1, short v2, char v):Dad(v){Child_v1 = v1; Child_v2 = v2;}

    private:
        short int Child_v1;
        short int Child_v2;
};

//---------------------------------------

//define a Child array:
Child bd[100]; 

for (int i =0; i<100;i++){

    bd[i] = Child(a,b,c); 

}
这是因为您声明了您的
Dad
s变量
private
,这意味着它不允许被任何非
Dad::method()
的东西修改。通常情况下,当事情是私有的时,它有一个很好的理由;例如,您不需要更改它,或者有更好的方法来更改它。

如果您确实希望允许您的
孩子
修改
Dad
s变量,您可以在
Dad
中使变量
受保护
,您的代码应按编写的方式工作。编译器生成的赋值运算符会做正确的事情。您认为问题具体是什么?不清楚您在问什么。请ephrase(不使用谷歌翻译)。或者举一个例子,说明你想在伪代码中实现什么?符号是不是意味着赋值?是的,它的意思是赋值…。很抱歉。你认为编译器生成的赋值运算符有什么问题?无论你认为这是在解决什么问题,OP显然要求的东西都不需要它。编译器生成的赋值运算符应该处理这个问题。正如Igor在一般性评论中所说,假设其余的构造函数都按声明的方式正确实现。谢谢。因为我需要将Dad变量声明为Private,所以我整天都在苦苦挣扎。我需要的是Dad::operator=(其他);在我调用“Dad operator=”之后,我的程序会运行得很好。非常感谢,伙计。是的,他本可以把它们都忽略掉,但我真的看不出其中的教育价值。然后你就看不到发生了什么。是的,你正在为它编写编译器,但同时你也看到了它的功能。这与使用
(*指针)是一样的成员< /代码>而不是<代码> > >代码>。它是相同的,但更清楚。在我看来,C++应该是什么。知道发生了什么,应该发生什么,但不必担心打字这么多,或者必须声明VTABS或其他什么。
class Child{
  Child& operator=(Child& other){
    Dad::operator=(other);
    //more assignments
  };