void writeNumbers(vector& input) { ofstream write; write.open("Integers.txt"); vector::iterator iter = input.begin(); for (iter; iter < input.end(); iter++) { **std::cout << (*iter)->toString() << std::endl;** } write.close(); I get an Access Violation error which points me to the toString() function: std::string Integer::toString() { std::stringstream ss; ss << *(this)->value; return ss.str(); } toString() works fine whenever I don't try to access it through the iterator. void writeNumbers(vector& input) { ofstream write; write.open("Integers.txt"); vector::iterator iter = input.begin(); for (iter; iter != input.end(); iter++) { std::cout << (*iter)->toString() << std::endl; } write.close(); } Integer::Integer(string input) { if(isNaN(input)) value = new int(atoi(input.c_str())); } //New constructor, works 100% Integer::Integer(string input) { if(!isNaN(input)) value = new int(atoi(input.c_str())); else value = new int(0); } ss << value; iter < input.end() iter != input.end()