Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22148

How to overload the

$
0
0

I made the following minimal example for operator overloading in C++. I would like to print the vector as shown below.

#include <iostream>#include <vector>using namespace std;ostream& operator<< (ostream& out, const vector<int>& v) {        for(size_t i = 0; i < v.size(); i++) {                out << v[i] << "";        }        return out;}int main(void){        vector<int> i = {1, 2};        cout << i << endl;}

However if I compile this with gcc as gcc test.cpp using the following version.

$ gcc --versiongcc (Arch Linux 9.3.0-1) 9.3.0

I get error messages all over the place which seem to reduce to the following.

undefined reference to `std::ostream::operator<<(int)'

But for completeness sake here is the complete error message.

/usr/bin/ld: /tmp/cc8gPHc3.o: in function `operator<<(std::ostream&, std::vector<int, std::allocator<int> > const&)':test.cpp:(.text+0x4e): undefined reference to `std::ostream::operator<<(int)'/usr/bin/ld: test.cpp:(.text+0x5d): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'/usr/bin/ld: /tmp/cc8gPHc3.o: in function `main':test.cpp:(.text+0xec): undefined reference to `std::cout'/usr/bin/ld: test.cpp:(.text+0xfb): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'/usr/bin/ld: test.cpp:(.text+0x106): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'/usr/bin/ld: /tmp/cc8gPHc3.o: in function `__static_initialization_and_destruction_0(int, int)':test.cpp:(.text+0x195): undefined reference to `std::ios_base::Init::Init()'/usr/bin/ld: test.cpp:(.text+0x1aa): undefined reference to `std::ios_base::Init::~Init()'/usr/bin/ld: /tmp/cc8gPHc3.o: in function `std::vector<int, std::allocator<int> >::_S_check_init_len(unsigned long, std::allocator<int> const&)':test.cpp:(.text._ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_[_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_]+0x5e): undefined reference to `std::__throw_length_error(char const*)'/usr/bin/ld: /tmp/cc8gPHc3.o: in function `__gnu_cxx::new_allocator<int>::deallocate(int*, unsigned long)':test.cpp:(.text._ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim[_ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim]+0x1c): undefined reference to `operator delete(void*)'/usr/bin/ld: /tmp/cc8gPHc3.o: in function `__gnu_cxx::new_allocator<int>::allocate(unsigned long, void const*)':test.cpp:(.text._ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv[_ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv]+0x2c): undefined reference to `std::__throw_bad_alloc()'/usr/bin/ld: test.cpp:(.text._ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv[_ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv]+0x3c): undefined reference to `operator new(unsigned long)'/usr/bin/ld: /tmp/cc8gPHc3.o:(.data.rel.local.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0'collect2: error: ld returned 1 exit status

Viewing all articles
Browse latest Browse all 22148

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>