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

Как сделать *_cast указателя shared_ptr<T>? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Что такое потоки ввода, потоки вывода? http://www.cyberforum.ru/cpp-beginners/thread1591358.html
Здарова всем! Не так давно уже прогаю на С++ и все НИКАК не могу понять, что такое потоки ввода, потоки вывода..! вот допустим есть код: std::cout << "Введите первое число: "; std::cin >> a; std::cout << "Введите знак: "; std::cin >> sign; std::cout << "Введите второе число: ";
C++ Дано натурально число n. Сколько цифр в этом числе. Чему равняется сумма цифр. Найти первую цифру Желательно в С http://www.cyberforum.ru/cpp-beginners/thread1591348.html
C++ Преобразования Фурье прямое и обратное из библиотеки OpenCV
столкнулся с такой проблемой, необходимо использовать преобразования фурье прямое и обратное из библиотеки opencv, собственно имеется код: Mat sr_int_l= Mat_<std::complex<double>>(1,N),sr_int_r= Mat_<std::complex<double>>(1, N); for (int i = 0; i < N; i++) { /// тут происходит заполнение этих двух массивов } Mat fft_l= Mat_<std::complex<double>>(1, N), fft_r=...
C++ Массивы char. В чем ошибка?
Доброго времени суток! Возникла ошибка в этом коде. Имеется массив слов, пробую заполнить этот массив. #define _CRT_SECURE_NO_WARNINGS//Позволяет использоваться методу strcpy #include <string> #include <stdlib.h> #include <iostream> using namespace std; void Output(string str) {
C++ Реализовать функцию изменения количества битов на отсчет для Wav файла http://www.cyberforum.ru/cpp-beginners/thread1591267.html
необходимо реализовать функцию изменения количества битов на отсчет. Если я к примеру увеличиваю bitpersample с 16 до 32. Я увеличиваю нужные переменные в заголовке в 2 раза. и по идеи должен данные каждого канала записать с 2мя нулевым байтами впереди. Если я прав, то в каком порядке мне записывать байты? а битрейт изменять надо?
C++ Написать класс для авторизации Необходимо написать авторизацию в консоли, уже второй вечер так ничего и не приходит на ум... Есть класс users, содержащий поля для логина и пароля. Ниже приведен код записи объекта в бинарный файл. Не могу понять, как правильно записывать данные: целиком объект класса или лучше по отдельности логин и пароль, чтобы потом удобнее было сверять с введенными? При последующем вводе логина и пароля... подробнее

Показать сообщение отдельно
Olex
17 / 17 / 1
Регистрация: 27.05.2013
Сообщений: 101
24.11.2015, 16:13     Как сделать *_cast указателя shared_ptr<T>?
Хочу определять тип (например через dynamic_cast) указателя shared_ptr.
(криво звучит но по другому выразить не могу)

Есть несколько классов. Все примерно такой структуры (смотри ниже).
Наследуются они чтоб сделать этот самый dynamic_cast

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
class foo_type{
  virtual void foo_(void)=0;
};
class char_int : public foo_type{
  public:
  char_int(int size):size_(size){
          first= new char [size]; second = new int [size];
  }
  ~char_int(){
         delete first; delete second;
  };
  int size_;
  char  *first;
  int *second;
};
 
class float_double : public foo_type{
  public:
  float_double(int size):size_(size){
          first= new float [size]; second = new double [size];
  }
  ~float_double(){
         delete first; delete second;
  };
  int size_;
  float  *first;
  double *second;
};
теперь я хочу иметь некоторый указатель shared_ptr<T> (boost или std тут без разници)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template<class T>
class TypeTMI_Ttype {
    public:
 
     ~TypeTMI_Ttype(){};
     TypeTMI_Ttype(int size):size_(size){
         data = boost::shared_ptr<T>(new T[size_]);
     };
 
     T* get_data(void){return  data.get();}
 
     int size_;
     boost::shared_ptr<T>data;
};
И вот теперь я хочу написать что то вроде:
C++
1
2
3
4
boost::shared_ptr<foo_type>pdata;//например это глобальный указатель
 
//где то создаем нужный тип
pdata = boost::shared_ptr < TypeTMI_Ttype <float_double> >(new float_double(100));
потом куда то передать pdata, и там определить на что оно указывает, char_int или float_double.
Последний отрывок кода конечно компилятор не воспринимает.

Как осуществить подобный старомодный фокус в предложенной интерпретации?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru