With the following code I get the warning "warning: 'class Passage' has virtual functions but non-virtual destructor":

Code:
class UZZT_Element
{
    public:

    int type;
    int glyph;
    int colour;

    virtual void receive() const = 0;
};

class Passage : public UZZT_Element
{
    public:

    std::string dest_name;

    Passage()
    {
        glyph = 0;
        colour = 0;
        type = 11;
    }

    void receive() const
    {

    }
};
I imagine it's to do with the new command hidden away inside the string class. I'm aware that destructors are separate for derived classes unless the base class has the virtual destructor. I just wanted to make sure that I can ignore the compiler warning; my understanding was that the compiler creates destructors as necessary, and that custom destructors are only needed when using the new and delete commands within the class.