C++ 如何使用基类指针引用派生类成员?

C++ 如何使用基类指针引用派生类成员?,c++,polymorphism,C++,Polymorphism,最后一行不正确。是否可以引用派生类成员?如果该成员不在基类中,则不应允许您访问该成员,并应给出编译错误。要访问派生类的成员,可以将其类型转换为派生类 class a{}; class b : public class a{ public: int c; }; a* var = new b; var->c=2; 如果该成员不在基类中,则不应允许您访问它,并且它应给出编译错误。要访问派生类的成员,可以将其类型转换为派生类 class a{}; class b : public class

最后一行不正确。是否可以引用派生类成员?

如果该成员不在基类中,则不应允许您访问该成员,并应给出编译错误。要访问派生类的成员,可以将其类型转换为派生类

class a{};
class b : public class a{
public:
int c;
};
a* var = new b;
var->c=2;  

如果该成员不在基类中,则不应允许您访问它,并且它应给出编译错误。要访问派生类的成员,可以将其类型转换为派生类

class a{};
class b : public class a{
public:
int c;
};
a* var = new b;
var->c=2;  

虽然var在编译时是一个b对象,但编译器不知道这一点,所以必须像这样将其转换为b对象或指针

class a{};
class b : public class a{
public:
    int c;
};
a* var = new b;
((b*)var)->c=2;
我的计算机科学老师解释说,在运行时和编译时处理两种情况


希望这能有所帮助。

当var在编译时是一个b对象时,编译器不知道这一点,因此您必须将其转换为这样的b对象或指针

class a{};
class b : public class a{
public:
    int c;
};
a* var = new b;
((b*)var)->c=2;
我的计算机科学老师解释说,在运行时和编译时处理两种情况

希望这对您有所帮助。

您可以使用从基本到派生的向下转换,然后访问该成员

static_cast(var)->c=2

您可以使用从基向下转换到派生,然后访问成员


static_cast(var)->c=2

((b)*变量)。c=2不工作。但是
((b*)var)->c=2没问题。很抱歉第一次我可能搞乱了操作顺序
((b)*var)。c=2不工作。但是
((b*)var)->c=2没问题。很抱歉第一次我可能把操作顺序搞砸了