Перегрузка <<
Нужно перегрузить оператор "<<" как член класса, ничего не выходит, выручайте
В любой книжке по С++
Код:
#include <iostream>
class varchar {
private:
char buf[255];
public:
friend std::ostream& operator << (std::ostream& _o, const varchar& s){
return _o.write(s.buf, strlen(s.buf));
}
friend std::istream& operator >> (std::istream& _i, varchar& s){
return _i.getline(s.buf, sizeof(s.buf) - 1);
}
};
int main(void){
varchar v;
std::cin >> v;
std::cout << v;
std::cin.sync();
return 0;
}
class varchar {
private:
char buf[255];
public:
friend std::ostream& operator << (std::ostream& _o, const varchar& s){
return _o.write(s.buf, strlen(s.buf));
}
friend std::istream& operator >> (std::istream& _i, varchar& s){
return _i.getline(s.buf, sizeof(s.buf) - 1);
}
};
int main(void){
varchar v;
std::cin >> v;
std::cout << v;
std::cin.sync();
return 0;
}
Перегружайте сдиг, а не потоковый вариант.
Код:
#include <cstdio>
class SomeClass {
unsigned int _n;
public:
SomeClass(unsigned int n = 0) : _n(n) {}
void print() {
printf("%u\n", _n);
}
SomeClass operator << (unsigned int shift_cnt) {
return SomeClass(_n << shift_cnt);
}
};
int main() {
SomeClass sc1(8);
SomeClass sc2 = (sc1 << 2); //сдвиг на 2 равносил. удвоению два раза
sc2.print(); // 8 * 2 * 2 = 32
return 0;
}
class SomeClass {
unsigned int _n;
public:
SomeClass(unsigned int n = 0) : _n(n) {}
void print() {
printf("%u\n", _n);
}
SomeClass operator << (unsigned int shift_cnt) {
return SomeClass(_n << shift_cnt);
}
};
int main() {
SomeClass sc1(8);
SomeClass sc2 = (sc1 << 2); //сдвиг на 2 равносил. удвоению два раза
sc2.print(); // 8 * 2 * 2 = 32
return 0;
}