I have a class `Message` that has a `std::string` as a data member, defined like this:

```
class Message
{
// Member Variables
    private:
        std::string text;
        (...)

// Member Functions
    public:
        Message(const std::string& t)
        : text(t) {}

        std::string getText() const {return text;}
        (...)
};

```

This class is used in a vector in another class, like this:

```
class Console
{
// Member Variables
    private:
        std::vector<Message> messageLog;
        (...)

// Member Functions
    public:
        Console()
        {
            messageLog.push_back(Message("Hello World!"));
        }

        void draw() const;
};

```

In `draw()`, there's an iterator that calls `getText()`. When it does, the program segfaults. I've determined that `text` is valid inside the `Message` constructor. However, I can't tell if it's valid from inside `Console`. I'm assuming it is, but if I try to inspect indices of `Console`'s messageLog, gdb tells me this:

`(gdb) p messageLog[0]  

 One of the arguments you tried to pass to operator[] could not be converted to what 
 the function wants.`

Anyone know what's going on?

EDIT: here's `draw()`. `TCODConsole` is part of a curses library I'm using, and so this function prints each message in `Console` to a part of the curses screen. `TL` and `BR` are `Point` member objects (two ints) that tell where on the screen to draw `Console`. I left out parts of `Message` and `Console` in the original question to hopefully make things clearer, but if you need me to post the entire classes then I can. They aren't too long.

```
void Console::draw() const
        {
            int x = TL.getX(), y = TL.getY();
            int width = BR.getX() - TL.getX();
            int height = BR.getY() - TL.getY();

            // draw the Console frame
            TCODConsole::root->printFrame(x, y, width, height, true);

            // print the Console's messages
            vector<Message>::const_iterator it;
            for(it=messageLog.begin(); it<messageLog.begin()+height-1; ++it)
            {
                string message = "%c" + it->getText();
                TCODConsole::setColorControl(TCOD_COLCTRL_1, 
                                             it->getForeColor(),
                                             it->getBackColor());
                y += TCODConsole::root->printRectEx(x, y, width, height,
                                                    TCOD_BKGND_NONE,
                                                    TCOD_LEFT,
                                                    message.c_str(),
                                                    TCOD_COLCTRL_1);
            }
        }

```