Форум программистов, компьютерный форум CyberForum.ru

Перегрузка операторов >> - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программное управление NumLock \ CapsLock \ Sroll Lock http://www.cyberforum.ru/cpp-beginners/thread1796292.html
Проблема следующая - есть устройство которое эмитируется под клавиатуру и управляется оно с помощью сигналов о включении светодиодов (NumLock\CapsLock\SrollLock) на клавиатуре. В DOS управлять светодиодами можно было с помощью //argument (Bit 0 - Scroll Lock, Bit 1 - Num Lock, Bit 2 - Caps lock) outp(0x60, arg);Для линукса есть KDSETLED - вот как у меня это выглядит void set_leds(int val) ...
C++ Пример применения constexpr Здравствуйте, можете привести и объяснить, какой нибудь простенький пример, уместного использования спецификатора constexpr. А то придумать не получается, а для хорошего запоминания, неплохо бы взглянуть на примерчик. :victory: http://www.cyberforum.ru/cpp-beginners/thread1796266.html
Проверка на корректный ввод числа C++
Вводится число, если оно введено верно, нужно вывести hello world это количество раз, а если введено что-либо другое, то вывести Error. Проблем со выводом hello world у меня не возникло, но не понимаю, как определить, корректно введено число или нет.
C++ Создание консоли
Хочу сделать командную строку на основе стандартной, вот код, но никак не пойму как заставить работать команду cd. int main() { string cmdline; system("cls"); system("color 2"); system("title Green cosole "); system("echo Message to console:"); while(1)
C++ Segfault при прасинге файла http://www.cyberforum.ru/cpp-beginners/thread1796200.html
С++ знаю плоховато. Решил написать себе генератор to-do list`a, вроде даже начало было неплохим, но потом обнаружил неприятную ошибку. Суть программы в том, что на основе секций в текстовом файле вида: { title строка level натуральное число depends строка description строка urgency число от 1 до 20 importance число от 1 до 20 } программа формировала бы список дел и записывала его в файл....
C++ Какие есть ошибки в коде #include <iostream> using namespace std; class A { int num1, num2; public: A(int i) :num1(i), num2(i) { } A(int i, int j) : num1(i), num2(j){ } friend ostream& operator<<(ostream& os, const A& obj){ return os << num1 << ' ' << num2 << endl; подробнее

Показать сообщение отдельно
Timama
9 / 9 / 5
Регистрация: 30.03.2016
Сообщений: 160

Перегрузка операторов >> - C++

19.08.2016, 21:59. Просмотров 195. Ответов 13
Метки (Все метки)

доброго времени суток.
не как не получаеться перегрузить операторы класса.
в общем, есть массив типа MString (другой класс) в котором есть массив char.
вот собственно и его код( записи массива MString)
C++
1
2
3
4
5
6
7
istream& operator >> (istream& input, MString &obj)
{
    cout << "Enter a word: ";
    input >> obj.data;
    obj.length = obj.mystrlen(obj.data);
    return input;
}
его header
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//MString.h
#ifndef MSTRING_H
#define MSTRING_H
 
#include <assert.h>//for check a dinamic memory
#include<iostream>//input output
 
using namespace std;
 
class MString{
private:
    char* data;//string
    int length;//long of string
public:
    MString();//def c'tor
    MString(char* str);//c'tor
    MString(int len);//c'tor
    MString(const MString& obj);//copy c'tor
    ~MString();//d'ctor
    char* getData();//get data
    void SetString(char* string);//set data
    int getLenght();//get lenght
    void setLenght(int len);//set lenght
    int mystrlen();//long of string
    int mystrlen(const char* string);//long of string
    void Printer();//screening a string
    char* mystrcpy(char* data, const char *string,int len);//copy two strings
    void operator + (const char letter);//add letter to the string
    void operator - (const char letter);//remove letter from the string
    bool operator == (const MString& b);//check if string are equel
    bool operator != (const MString& b);//check if string are not equel
    bool operator >(const MString& b);//check if a letter of this object are bigger than letters of b object
    bool operator <=(const MString& b);//check if this obj is smaller or equel to b obj
    bool operator <(const MString& b);//check if letter of this obj are smaller than letters of b obj
    bool operator >=(const MString& b);//check if this obj are bigger or equel to b obj
    void operator =(const MString& b);//this obj = b obj
    char operator [] (const int index);//returnt index
    char* operator+(const MString& b);//add one string to another
    MString& operator +=(const char letter);//add a letter to the end of the string
    char* operator()(int, int);//return a new string from the index until here lenght
    char* operator()(int);//return new string from the index 0 until here lenght
    bool operator !();//check if string are clear
    MString& operator ++();//add a first letter to the end of the string
    MString& operator++(int);//end a end letter to the end of the string
    friend ostream& operator << (ostream& out, const MString& obj);//out put the object
    friend istream& operator >> (istream& in, MString& obj); //in out the object
    void AllSmall();//convert all letter to big
    void AllBig();//convert all letter to small
};
#endif MSTRING H


Класс Story содержит массив типа MString и должен записать в него массивы типа char (каждый индекс массива MString это слово, тоесть во время записи после того как ввод подойдет SPACE надо переходить на следующий индекс.
вот собственно набрости перегрузки в Story:
C++
1
2
3
4
5
6
7
8
9
10
istream& operator >> (istream& input, Story &obj){
    int i;
    cout << "Enter a sentence:\n " << endl;
    for (i = 0; i < obj.lenght; i++){
        while (obj.TheStory[i] != SPACE){
            input >> obj.TheStory[i];
        }
    }
    return input;
}
его header
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//Story.h
#ifndef STORY_H
#define STORY_H
#include "MString.h"
#include <iostream>
#include <assert.h>
 
class Story{
private:
    MString* TheStory;
    MString NameStory;
    int lenght;
    int numofstories;
public:
    Story();
    Story(char* str);
    Story(const Story& b);
    ~Story();
    MString longword();
    int lenlongword();
    Story& AllBig();
    Story& AllSmall();
    void storyname();
    Story& addword(char* str);
    int getnumofstories();
    Story& operator=(const Story& b);
    bool operator ==(const Story& b);
    bool operator >(const Story& b);
    bool operator <(const Story& b);
    friend ostream& operator << (ostream& out, const Story& obj);//out put the object
    friend istream& operator >> (istream& in, Story& obj); //in out the object
    MString operator [](int);
    friend int setNumOfStories(int num);
};
#endif STORY H
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru