Александр
Нашествие
Maksim
Привет народ. Не подскажете как можно при отладке игнорить first chance exception? компилятор майкросовтовский, отладчик как я понимаю cdb
Dmitry
Привет! Ищу программистов!
Berkus
Anton
Egor
Где они есть?)
Тут есть, но все вакансии и предложения о работе - сначала в личку @AlexFails , а он уже скажет, можно ли это в чат и в каком виде. Если есть конкретные вопросы по написанию кода - то сюда или в @supapro (если вы новичок или если вам кажется, что у вас вопрос начинающего уровня).
Dmitry
Maksim
Square
Square
Square
:/
Maksim
в qt есть только ignore first chance acces violation, остальное не могу найти
Square
(´ー`)
Square
Kirill
Добрый день, господа. Подскажите, допустимо ли распространять бинарник приложения вместе с Qt-библиотеками и libstdc++, с которым все это было собрано, если на целевой машине в системе другая версия libstdc++?
Berkus
можешь .so шки положить вместе с аппой, но у многих дистров жесткая политика на rpath
Matwey
Статически слинкуй
Berkus
Max
Дайте линк на самую четкую и лаконичную реализацию синглтона - родителя, которую видел мир
Matwey
Это как?
Matwey
Go не дорого?
Kirill
Вот мне тоже боязно. :)
Kirill
Если libstdc++.so.6 будет лежать в директории бинарника, Qt тоже будет использовать именно ее?
Kirill
что плохого в статической линковке кьюта?
Kirill
ну под нужную тарге платформу собирают ведь
Kirill
да, на прошлой работе утилитки собирал статически, екзешник весит охулиард но зато все свое при себе держит
Kirill
когда ставишь утилитку в дичайшей жопе мира не особо есть желание качать из интернета нужную дллку
докер не предлагать, там винда)
PRoSToC0der
кстати, кто-нибудь может что-нибудь хорошее сказать о применении Link-Time Optimization в libstdc++? (чтобы потом статически линковать с применением LTO)
Kirill
Приложение у меня на Qt, закрытое. Нужно его устанавливать на Astra Linux (это такой урезанный Debian). Я поставил ВМ, но там старые gcc и Qt. Кто-то в компании раньше сделал сборки gcc и Qt, которые я поставил. Но gcc генерирует код, использующий другую версию libstdc++, а Qt был собран этой версией gcc. Говорят, раньше весь рантайм с собой тащили.
Kirill
гуй, нетвор, кор
Max
Чтобы не придумывать велосипед и не отстрелить ноги
Evgenii
Max
Если это возможно написать без потенциальных проблем
Evgenii
ну понятно что не факт
Evgenii
но скорее всего
Evgenii
особенно с учетом вопроса
Max
Хотелось бы для удобства клас-родитель-синглтон, короче говоря. Задача простая - нужен 1 инстанс обьекта.
Клас-родитель - потому что нужно в разных местах заюзать синглтоны, но хотелось бы вынести удаление, например, всех конструкторов копии/перемещения и соответствующих операторов у родителя, а не писать это в каждом классе. Как-то так.
Max
Если ничего готового нету, то напишу велосипед и кину сюда, может забаните его за наличие проблем и подскажите как исправить
Крылатый
Kirill
Крылатый
Эм, самый простой синглтон на C++11 это просто ж.
Крылатый
class Singleton {
public:
static Singleton & Instance() {
static Singleton myInstance;
return myInstance;
}
Singleton(Singleton const&) = delete; // Copy construct
Singleton(Singleton&&) = delete; // Move construct
Singleton& operator=(Singleton const&) = delete; // Copy assign
Singleton& operator=(Singleton &&) = delete; // Move assign
protected:
Singleton()
{}
~Singleton()
{}
}
Крылатый
Вот такого сейчас достаточно.
Крылатый
Вполне трейдсейфно)
Крылатый
Поправьте, если нет.
Крылатый
Крылатый
Но синглтон, вроде, и нужен всё время жизни процесса.
Max
Крылатый
Max
Зачем?
Так я ведь написал, что нужен синглтон в роле базового класса ))
Max
по СИНГЛТОНИРОВАНИЮ
вголос ))
B
можно сделать crtp с синглтоном
B
для дочерних будет выглядеть как
class Derived: public Singleton<Derived>{}
B
при этом сам код для синглтонов будет в классе Singleton
Крылатый
Крылатый
Плюс есть Boost.Singleton
Крылатый
http://www.boost.org/doc/libs/1_62_0/libs/serialization/doc/singleton.html
Berkus
Berkus
ldd подскажет что он там думает
Max
Как вам такой вариант и как избавиться от friend class так, чтоб он мог создать T instance ?
#define SINGLETON_CLASS(T) class T : public SingletonBase<T>
template <typename T>
class SingletonBase
{
public:
SingletonBase(const SingletonBase&) = delete;
SingletonBase(SingletonBase&&) = delete;
SingletonBase& operator = (const SingletonBase&) = delete;
SingletonBase& operator = (SingletonBase&&) = delete;
static T& instance()
{ static T instance; return instance; }
protected:
SingletonBase() = default;
virtual ~SingletonBase() = default;
};
SINGLETON_CLASS(Custom)
{
friend class SingletonBase<Custom>;
private:
Custom() { cout << "Ctor" << endl; }
};
int main() {
Custom::instance();
Custom::instance();
}
Berkus
используй CRTP
Max
так а я что использовал??
Berkus
а, ну там за макросом не видно было что ты использовал
Berkus
без френдячки тут не получится насколько я знаю, т.к. темплейты
Berkus
но с другой стороны SingletonBase вроде никакой доп доступ не нужен
Berkus
а, конструктор, блин
Max
Max
для полной удовлетворенности не хватает избавиться от friend
Max
Окей, а можно SINGLETON_ACCESSIBLE(Custom) писать как SINGLETON_ACCESSIBLE, то есть чтоб автоматически взять тип в макросе? ну типа Q_OBJECT
Max
using namespace std;
#define SINGLETON_ACCESSIBLE(T) friend class SingletonBase<T>;
template <typename T>
class SingletonBase
{
public:
SingletonBase(const SingletonBase&) = delete;
SingletonBase(SingletonBase&&) = delete;
SingletonBase& operator = (const SingletonBase&) = delete;
SingletonBase& operator = (SingletonBase&&) = delete;
static T& instance()
{ static T instance; return instance; }
protected:
SingletonBase() = default;
virtual ~SingletonBase() = default;
};
class Custom : public SingletonBase<Custom>
{
SINGLETON_ACCESSIBLE(Custom)
private:
Custom() { cout << "Ctor" << endl; }
};
int main() {
Custom::instance();
Custom::instance();
}
Max
Тогда friend глаза резать не будет
Олександр
Макросы больнее