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复制描述派生类中Base类的值? 也许最好像在“simpleMethodOfAssigningNthElement”中那样做? 哪个更快?
答案 0 :(得分:1)
您无法按照assignNthElement
的方式进行操作,只需像simpleMethodOfAssigningNthElement
那样实施。
答案 1 :(得分:1)
您无法将基类对象分配给Derived类对象,如assignNthElement()
中那样会导致编译错误。
请注意,允许反向,即:您可以将Derived类对象分配给Base类对象,但最终会将派生类对象的成员切片。这种现象称为对象切片。
答案 2 :(得分: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;
}
};