Мне кажется, это нормально. Однако помните, что любое повреждение кучи или стека может привести к этой ошибке. Вам нужно захватить трассировку стека и заглянуть внутрь correctAnswer и убедиться, что и он, и рассматриваемый экземпляр Hangman являются допустимыми объектами.
Кроме того, я просто немного обеспокоен вашими функциями здесь. Они кажутся очень странными. Почему бы просто не заменить на std :: for_each?
Редактировать @ комментарий:
Если у вас есть C ++ 0x, вы можете просто сделать
std::for_each(correctAnswer.begin(), correctAnswer.end(), [this](const char& ref) {
std::cout << this->displayChar(ref);
});
Иначе, вам придется сделать что-то похожее на это:
struct helper {
Hangman* ptr;
void operator()(const char& ref) {
std::cout << ptr->displayChar(ref);
}
};
helper Helper;
Helper.ptr = this;
std::for_each(correctAnswer.begin(), correctAnswer.end(), Helper);