Ik wil een klasse maken waarbij ik de << operator kan gebruiken om allerlei typen te kunnen weergeven. Ik wil hierbij gedrag dat extreem veel lijkt op:
std::cout << kan namelijk omgaan met veel verschillende types.
Nu werkt het onderstaande voorbeeld bij gebruik van een template.
Dit werkt op zich prima. Maar waarom werkt dit niet:
Met andere woorden: Kan ik die << operator ooit zo definiëren dat gvd << std::endl wel werkt?
code:
1
| std::cout << "test" << std::endl; |
std::cout << kan namelijk omgaan met veel verschillende types.
Nu werkt het onderstaande voorbeeld bij gebruik van een template.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #include <iostream>
#include <sstream>
using namespace std;
class GVD
{
private:
void show(stringstream &al) { std::cout << al.str(); }
public:
GVD() {}
~GVD() {}
template<class T> GVD& operator<<(T x) { stringstream al; al << x; show(al); return *this;}
};
int main() {
GVD gvd;
gvd << "Test\n";
} |
Dit werkt op zich prima. Maar waarom werkt dit niet:
code:
1
| gvd << "Test" << std::endl; |
Met andere woorden: Kan ik die << operator ooit zo definiëren dat gvd << std::endl wel werkt?
[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]