T
Tim Partridge
I'm not very good with namespaces, so my problem is probably a simple one.
I can't get the following to compile on gcc 3.3.1. It reports
main.cc: In function 'std:stream & operator<<(std:stream, const
ns::C&)':
main.cc:12: error: 'int ns::C::i' is private
main.cc:17: error: within this context
main.cc: In function 'int main(int, char**)':
main.cc:23: error: ambiguous overload for 'operator<<' in 'std::cout << c'
main.cc:16: error: candidates are: std:stream& operator<<(std:stream&,
const ns::C&)
main.cc:9: error: std:stream& ns:perator<<(std:stream&, const
ns::C&)
make: *** [main.o] Error 1
#include <iostream>
namespace ns {
class C {
public:
C(int i) : i(i) {};
~C() {};
friend std:stream &operator<<(std:stream
&stream, const C &c); // line 9
private:
int i; // line 12
};
}
std:stream &operator<<(std:stream &stream, const ns::C &c) {
stream << "C(" << c.i << ")" << std::endl; // line 17
return stream;
}
int main(int argc, char *argv[]) {
ns::C c(4);
std::cout << c; // line 23
return 0;
}
I can't get the following to compile on gcc 3.3.1. It reports
main.cc: In function 'std:stream & operator<<(std:stream, const
ns::C&)':
main.cc:12: error: 'int ns::C::i' is private
main.cc:17: error: within this context
main.cc: In function 'int main(int, char**)':
main.cc:23: error: ambiguous overload for 'operator<<' in 'std::cout << c'
main.cc:16: error: candidates are: std:stream& operator<<(std:stream&,
const ns::C&)
main.cc:9: error: std:stream& ns:perator<<(std:stream&, const
ns::C&)
make: *** [main.o] Error 1
#include <iostream>
namespace ns {
class C {
public:
C(int i) : i(i) {};
~C() {};
friend std:stream &operator<<(std:stream
&stream, const C &c); // line 9
private:
int i; // line 12
};
}
std:stream &operator<<(std:stream &stream, const ns::C &c) {
stream << "C(" << c.i << ")" << std::endl; // line 17
return stream;
}
int main(int argc, char *argv[]) {
ns::C c(4);
std::cout << c; // line 23
return 0;
}