[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: C++ header for 'push_back'



On Fri, 30 Oct 1998, Bob Bernstein wrote:
>   
>   reverse(s.begin(), s.end());
>   s.push_back('\n');
>   cout << s;
> }
> 
> The compile complains that:
> 
> /home/bernie/cpp/stl.cpp: In function `int main()':
> /home/bernie/cpp/stl.cpp:17: no matching function for call to
> `basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>

I assume the rest of the error message says ::push_back(char)?
 
All the methods for string are in the basic_string class declaration; if
push_back()  isn't there, there is no push_back() implementation for
string.  Conveniently C++ requires the entire class to be declared in one
place, so it's easy to see if a method exists. 

Stroustrup (page 593, 3rd edition) says string does not have push_back().
Try:

 s += '\n';

instead.

You can see the basic_string class in /usr/include/g++/std/bastring.h;
string is a typedef (typedef basic_string <char> string) which is in the
<string> header. basic_string can also use wide characters (like Unicode,
I guess), that's why it's a template.

Havoc





Reply to: