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

Наследование от shared_ptr - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ пример из книги http://www.cyberforum.ru/cpp-beginners/thread939942.html
#include <iostream.h> long summa (int k,...){ int *pik=&k; char *pc=(char *)pik; cout <<" *pc="<<*pc<<" pc="<<pc; long total =0; for (int x=k;x>0;x--) { pc=pc+4; total=total+*pc; //pik=(int *)pc;
C++ Разработка графического редактора Помогите пожалста.. Разработка графического редактора.Программный модуль должен обеспечивать построение многоугольников,выбор цвета фона и контура, сохранения в цифровом формате(х,у),открытие ранее сохранённых объектов.Реализоватьфункции сдвига и симметричного отображения.Рекомендуется применение структурных массивов.Реализовать обработку исключительных ситуаций. http://www.cyberforum.ru/cpp-beginners/thread939936.html
C++ Функция "возвращает" значение
Почему у этой функции не указан тип возвращаемого значения? template <class T> operator T () { return *((T *)m_p); } class any { void * m_p; public: template <class T> any( T value ) : m_p( (void *)(new T ( value )) ) {} template <class T> operator T () { return *((T *)m_p); }
C++ не работает binary_search из STL
привет всем! какойто глюк или я что то не понимаю...применяю бинарный поиск из stl, и в итоге он не всегда правильно работает...пользуюсь компилятором g++ стандартом с++11...вот код int main() { vector<string> array = { "F", "Q", "G", "T", "J" }; cout<<binary_search(array.begin(), array.end(), "F") //1 <<endl <<binary_search(array.begin(), array.end(), "Q") //0 ...
C++ Нужно найти тему http://www.cyberforum.ru/cpp-beginners/thread939828.html
Даже не знаю как правильно спросить. Вот в векторе все элементы должны быть одного типа. А как называется вектор (или не вектор) в который можно записывать разные типы данных? На этом форуме тема про это была примерно месяц назад
C++ Создание типа данных для чисел определенного размера Здравствуйте. Столкнулся с проблемой работы с большими числами на разных архитектурах. На х64 размер long = 8. На х32 = 4. Мне нужно что бы на любой архитектуре гарантированно мой тип был 8 байт. Прикол в том, что нужно самому реализовать все без использования сторонних библиотек и т.д. Там же мне нужны будут операции + - ^. Я думал создать собственные класс, но опять таки это куча кода. Может... подробнее

Показать сообщение отдельно
Yacudzer
3 / 3 / 2
Регистрация: 06.07.2012
Сообщений: 107
19.08.2013, 10:11     Наследование от shared_ptr
Добрый день.
Подскажите вот какую вещь.
Сделал удобный для себя класс для ведения логов.
В нем переопределил operator<< след. образом:
C++
1
2
3
4
5
6
7
8
    template <class T>
    YacLog& operator<<(T inp)
    {
        TempStream.clear();
        TempStream << inp;
        toLog(defaultLevel,TempStream.str());
        return *this;
    };
Далее, т.к. этот класс будет агрегироваться в других классах, решил передавать его с помощью указателя shared_ptr<YacLog>.
Однако, для пущей удобности решил переопределить в shared_ptr метод operator<< что бы каждый раз не разыменовывать:

C++
1
2
3
4
5
6
7
8
9
class YacShared_ptr : public shared_ptr<YacLog>
{
    template <class S>
    YacShared_ptr& operator<<(S inp)
    {
        (*this) << inp;
        return *this;
    }
};
пытаюсь протестить это все хозяйство след. образом:

C++
1
2
3
4
5
6
7
8
#include "YacLog.h"
int main(void)
{
    YacShared_ptr tmp;
    tmp.reset(new YacLog("qwerty.log"));
    tmp << "asd" << 123456;
    return 0;
}
софтина зацикливается будто происходит рекурсивный вызов в этом месте:
C++
1
(*this) << inp;
Вопрос: что я сделал не так?
Спасибо.

p.s.
еще вопрос. Почему не получается создать экземпляр класса таким образом:
C++
1
YacShared_ptr tmp (new YacLog("qwerty.log"));
пишет следующее:
Код
1>d:\vs cpp projects\testlog\testlog\main.cpp(8): error C2664: 'YacShared_ptr::YacShared_ptr(const YacShared_ptr &)' : cannot convert parameter 1 from 'YacLog *' to 'const YacShared_ptr &'
1>          Reason: cannot convert from 'YacLog *' to 'const YacShared_ptr'
1>          No constructor could take the source type, or constructor overload resolution was ambiguous
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru