Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
helloy
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 46
#1

Включите в класс Met функцию bool moved(), которая получает результат вызова pointer() и сообщает, был ли перемещен указатель

29.11.2013, 13:26. Просмотров 255. Ответов 1
Метки нет (Все метки)

Включите в класс Met функцию bool moved(), которая получает результат вызова pointer() и сообщает, был ли перемещен указатель (вследствие перераспределения памяти).
Напишите функцию main() для тестирования функции moved().

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <iostream>
#include <string>
using namespace std;
typedef unsigned char byte;
 
class Mem{
    byte*mem;
    int size;
    void ensureMinSize(int minSize);
public:
    Mem(int sz=0);
    ~Mem();
    int msize();
    byte* pointer(int minSize=0);
};
 
 
class MyString {
    Mem*buf;
public:
    MyString();
    MyString(char *str);
    ~MyString();
    void concat(char*str);
    void print(ostream &os);
    bool moved();
};
 
 
Mem::Mem(int sz){
    mem=0;
    size=0;
    ensureMinSize(sz);
}
    
Mem::~Mem(){ delete []mem;};
int Mem::msize(){return size;};
 
 
void Mem::ensureMinSize(int minSize){
    if(size < minSize) {
        byte*newmem=new byte[minSize];
        memset(newmem+size,0,minSize-size);
        memcpy(newmem,mem,size);
        delete[]mem;
        mem=newmem;
        size=minSize;
    }
}
 
byte* Mem::pointer(int minSize){
    ensureMinSize(minSize);
    return mem;
}
 
 
 
 
 
 
    MyString::MyString(){
        buf=0;
        
    }
 
    MyString::MyString(char *str){
        if(!*str){
            buf=0;
            return;
        }
        buf=new Mem(strlen(str)+1);
        strcpy((char*)buf->pointer(),str);
    
    }
 
    MyString::~MyString(){
        delete buf;
    }
 
    void MyString::concat(char*str){
    if(!buf) buf=new Mem;
    strcat((char*)buf->pointer(buf->msize()+strlen(str)+1),str);
    }
 
    void MyString::print(ostream &os){
        if(!buf) return;
        os<<buf->pointer()<<endl;
        
    }
 
    bool MyString::moved(){ 
        /* как реализовать? */
 
        return true;
    }
 
 
 
int main(){
    
    MyString s("My test string");
    s.print(cout);
    s.concat(" some additional stuff");
    s.print(cout);
 
    MyString s2;
    s2.concat("Using default constructor");
    s2.print(cout);
    return 0;
}
Добавлено через 12 часов 48 минут


Добавлено через 8 часов 20 минут


Добавлено через 14 часов 36 минут
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2013, 13:26
Ответы с готовыми решениями:

Создать функцию, которая на вход получает строку символов, сообщает количество вхождений каждой цифры в строку...
Создать функцию, которая на вход получает строку символов, сообщает количество...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть...

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось...

заклинило, bool->char, конструкция if(!moved)
в ардуине был тип bool переделываю в char, как правильно переделать...

Можно ли обращаться к методам и свойствам работающего потока, который был перемещен
class main { public: ThreadNEW *threadNEW = new ThreadNEW();...

1
Raali
639 / 343 / 74
Регистрация: 06.07.2013
Сообщений: 1,107
Завершенные тесты: 1
29.11.2013, 13:37 #2
вопрос то в чем заключается?
в посте вижу только цитированное задание
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2013, 13:37

Указатель на привязанную функцию можно использовать только для вызова функции
int ident=mflats.at(1).GetIdent; Объясните пожалуйста, почему нельзя...

Передать результат функции в функцию обратного вызова
Доброго времени суток. Есть функция newDataSaving. Результат ее работы (массив...

Деревья С++ (функция, которая получает указатель на корень дерева и возвращает длину самой длинной ветки на дереве)
Здравствуйте! Помогите, пожалуйста, в написании функции ,которая получает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru