1
class Base{
public:
float a,b;
};

class Derived:public Base{
public:
int someInteger, otherInt;

void assignNthElement(vector<Base> &myArray,int i){
this=myArray[i-1];//??? How ???
}

void simpleMethodOfAssigningNthElement(vector<Base>&myArray,int i){
a=myArray[i-1].a;
b=myArray[i-1].b;
}


};

如何从 myArray 直接复制描述派生类中基类的值?也许最好像在“simpleMethodOfAssigningNthElement”中那样做?哪个更快?

4

3 回答 3

1

您不能将基类对象分配给派生类对象,因为assignNthElement()这会给您带来编译错误。

请注意,允许反向操作,即:您可以将派生类对象分配给基类对象,但这最终会分割派生类对象的成员。这种现象称为对象切片

于 2012-05-11T07:42:14.173 回答
1

你不能按照你尝试的方式来做assignNthElement,它只需要像这样实现simpleMethodOfAssigningNthElement

于 2012-05-11T07:38:02.093 回答
0

您可以使用一些 C-hacks,但这是不好的方法。最好的方法是 simpleMethodOfAssigningNthElement。如果你愿意,你可以超载operator=上课Derived

class Base{
public:
float a,b;
};

class Derived : public Base{
public:
    int someInteger, otherInt;

    void assignNthElement(vector<Base> &myArray,int i){
        this = myArray[i-1];// It's OK now
    }

    const Derived & operator=(const Base &base){
        a=base.a;
        b=base.b;
    }

};
于 2012-05-11T07:42:55.260 回答