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

Возвращение ссылки на указатель использование её как левостороннего значения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Иерархия С++ http://www.cyberforum.ru/cpp-beginners/thread948677.html
Привет. Заинтересовал вопрос иерархии С++: код -> функции -> классы/структуры -> ?? подозреваю что дальше идут массивы классов, в общем, какие следующие шаги до самого конца?
C++ Консольное приложение. В файле находятся только целые числа. Определить, имеет ли последовательность чисел, находящихся в файле, нечетную длину В файле находятся только целые числа. Определить, имеет ли последовательность чисел, находящихся в файле, нечетную длину, и если да, то переменной m присвоить значение среднего элемента файла. В противном случае присвоить этой переменной значение первого числа файла. http://www.cyberforum.ru/cpp-beginners/thread948648.html
C++ Время сортировки
Добрый день! Помогите, пожалуйста, со следующей задачей. Есть задание: отсортировать массив и замерить время сортировки. Сделал: int main() { DWORD start = GetTickCount(); Selection_Sort(size_of_array, myarray); DWORD end = GetTickCount();
C++ Р. Лафоре "ООП в C++". Не компилируется пример с консольной графикой
Изучаю C++ по книге Р. Лафоре. Дошёл до 5-ой главы, и мне встретился пример использования консольной графики. Страница 179. Пример называется "Структура circle". К этому примеру прилагается библиотека "msoftcon.h". Ну пример я переписал, библиотеку подключил и в папку с .cpp файлом положил. Работаю в DevC++. И после компилирования выскакивает несколько ошибок: undefined reference to...
C++ эквивалентно? http://www.cyberforum.ru/cpp-beginners/thread948570.html
** = & привильно?
C++ Setlocale vs. SetConsoleCP В чём разница? Локаль определяет, в какой кодировке символы представляются в программе, а SetConsoleCP устанавливает ту же характеристику для связанной консоли, или?.. И почему при выполнении: setlocale(LC_CTYPE, ".866"); cout<<setlocale(LC_CTYPE,"")<<endl<<endl; В результате выводится: Russian_Russia.1251 ? подробнее

Показать сообщение отдельно
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109

Возвращение ссылки на указатель использование её как левостороннего значения - C++

05.09.2013, 12:20. Просмотров 566. Ответов 11
Метки (Все метки)

Есть шаблон:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//-------------------------------------------------------
template<class T> 
struct ts {
private:
    void* data;
public:
    ts(T* pt) : data(pt) { }
    
    T& get_data() { return *static_cast<T*>(data); }
 
// интересующий меня метод:
 
    T*& elem()  { 
        return static_cast<T*>(data);       
    }
    
};
//-------------------------------------------------------
Нужно чтобы работал такой код:

C++
1
2
3
4
5
6
7
8
9
10
    ts<int> t(new int(10));
    t.get_data() = 20;
    cout << t.get_data() << endl;
 
    *t.elem() = 25;
    cout << t.get_data() << endl;
    
// переназначение t.data
    t.elem() = new int(30);
    cout << t.get_data() << endl;
Помогите пожалуйста понять как это реализовать! Почему не компилируется:
C++
1
2
3
4
5
6
7
//-------------------------------------------------------
    T*& elem()  { 
        return static_cast<T*>(data);       
    }
    
};
//-------------------------------------------------------
а

C++
1
2
3
4
5
6
7
8
9
//-------------------------------------------------------
    T*& elem()  { 
 
        T* temp=static_cast<T*>(data);
        return temp;    
    }
    
};
//-------------------------------------------------------
компилируется, но не позволяет переназначить указатель void* ts::data ?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru