相关疑难解决方法(0)

如何通过指向派生类的基类指针调用Base类方法

class Base
{
  public:
    virtual void foo()
    {}
};

class Derived: public Base
{
  public:
    virtual void foo()
    {}
};

int main()
{
    Base *pBase = NULL;
    Base objBase;
    Derived objDerived;

    pBase = &objDerived;
    pBase->foo();

    /*Here Derived class foo will be called, but i want this to call 
    a base class foo. Is there any way for this to happen? i.e. through 
    casting or something? */
}
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism

13
推荐指数
3
解决办法
7805
查看次数

在派生类型的对象上从基类调用虚方法

class Base
{
public:
    virtual void foo() const
    {
        std::cout << "Base";
    }
};

class Derived : public Base
{
public:
    virtual void foo() const
    {
        std::cout << "Derived";
    }
};

Derived d; // call Base::foo on this object
Run Code Online (Sandbox Code Playgroud)

试过铸造和功能指针,但我不能这样做.是否有可能打败虚拟机制(只是想知道它是否可能)?

c++

8
推荐指数
2
解决办法
1643
查看次数

重写push_back c ++

我有一个名为Pathextends 的类std::vector<Square *>,其中Square也是我创建的类.这Path将作为实体遍历2D环境的指南.我需要获得最长路径和最短路径,因此我希望找到Squaresa中两个之间的平方数Path.要做到这一点,我觉得重载是有益的std::vector<Square *>::push_back(const value_type &__x),虽然我不确定它的语法是什么.我目前正在尝试这个:

class Path : public std::vector<Square *>
{   //... functional stuff, not relevant. 
    int length;
public:
    push_back(const value_type &__x)
    {   Square *last_square = this->at(this->size() - 1);

        // how do I call super class push_back?
        // however that works, I push back &__x square here.

        Square *most_recent = (Square *)&__x;
        int delta_x = compare_distance(last_square, most_recent);
        length += delta_x;
    };
    int path_length() { …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance overriding overloading vector

2
推荐指数
1
解决办法
3394
查看次数