Вопросов: 3249
Ответов: 32768
памяти конструктором из-за того, что он для всех объектов память скопом выделяет. В итоге конструктор В С++11 превратился в странную структуру с пустыми фигурными скобками на конце: RatedPlayer::RatedPlayerunsigned int r, const TableTennisPlayer & tp : TableTennisPlayertp, ratingr {} Почему бы не перенести этот member list внутрь скобок и не инициализировать все там, раз уж в листе все и инициализируется?
смысл соответствует тому, на что оно ссылается, http://eel.is/c++draft/defns.access, или же тут более широкий смысл, который затрагивает и манипуляции нескалярами? Меня смущает слово dynamic в описании, так как в соответствии с http://eel.is/c++draft/basic.memobj#intro.object-1 и http://eel.is/c++draft/defns.dynamic.type, http://eel.is/c++draft/defns.dynamic.type.prvalue, http://eel.is/c++draft/defns.static.type динамический тип может быть лишь у полиморфных объектов, то есть типа класса, не скаляра, и почему бы тогда просто не написать "the type". И второй вопрос, говорит ли http://eel.is/c++draft/basic.lval#11.3, что скалярные/любые объекты, то есть память даже без объектов http://eel.is/c++draft/basic.memobj#basic.life-6.4 можно инспектировать как байты?
- аллокатор на связанном списке. Для первого чанка память выделяется нормально. Второй уже всё. Отладчик дальше строки с new char не идет. Переписал что бы было поменьше кода, вот минимальная версия где воспроизводится в полном коде есть деструкторы и прочее. https://pastebin.com/iq0PXLpG
программы? Чтобы любая ошибка на любой стадии работы сохранялась. В том числе краш программы
я тут со своими глупыми вопросами новичков. Сейчас разбираюсь с рандомом и тут случился вопрос. Я понимаю как написать рандом от 1 до 10 ''' 1 + rang % 10 ''' Но я хочу сделать рандом от 3 до 9 Куда писать какое значение ? Ибо ''' 3 + rang % 9 ''' будет выдавать от 3 до 11
фукнции ссылка, ноя не понимаю почему возвращается dereferenced указатель const Stock & Stock::topvalconst Stock & s const { if s.total_val > total_val return s; // here returning the reference it is OK else return *this; // here we are returning de-referenced pointer which should be the value, not the reference }
не оказалось, но оказался std::reference_wrapper. Из этой статьи узнал, что реализация std::ref простая. Решил реализовать у себя и заодно проверить примером из приведенной статьи. Однако скомпилить не удалось. Привожу полный код и часть ошибок компилятора в конце кода. Подскажите, что не умеет мой std::reference_wrapper? https://godbolt.org/z/adjrGY
могут быть разного вида, N1 и N2, наследуются от Node, потом используются в Tree, в которой лежит корень дерева. Надо сделать контейнер для хранения потомков универсальным, чтобы можно было не только в vector хранить, а в list, deque или в собственном. Сейчас пытаюсь добавить в параметры Node для контейнера template<typename, typename...> class Container, typename... Params и потомков хранить в Container<std::shared_ptr<T<TIndex>>, Params...> children;. Но проблема с наследованием для N1 и N2. Подскажите, пожалуйста, как это правильно сделать, и как создавать объекты типа Tree с указанием контейнера для хранения узлов. template <template <typename> class T, typename TIndex> struct Node { TIndex index; std::vector<std::shared_ptr<T<TIndex>>> children; Node : index0 { } }; template <typename TIndex> struct N1: public Node<N1, TIndex> { N1 : Node<N1, TIndex> {} }; template <typename TIndex> struct N2: public Node<N2, TIndex> { size_t count; N2 : Node<N2, TIndex>, count0 {} }; template <typename TNode> // можно N1 или N2 использовать struct Tree { std::shared_ptr<TNode> root; Tree { root = std::make_shared<TNode>; } }; //Tree<N1<int>> obj; // или Tree<N2<int>> //std::cout << obj.root->index << std::endl; template<template <typename> class T, typename TIndex, template<typename, typename...> class Container, typename... Params> struct NewNode { TIndex index; Container<std::shared_ptr<T<TIndex>>, Params...> children; NewNode : index0 { } }; // а как создать NewN1 и NewN2 от NewNode а затем использовать при создании Tree?
И какие книги вам помогли больше понять тот или иной язык? С чего вы начинали программировании у меня есть база с++, и питона Хочу продвинуться дальше. Углубляться в тот или иной язык. Я был бы очень благодарен вам если б сказали Заранее спасибо
компилятор напихать че своего в начало памяти занимаемой экземпляром класса, в его середину. Перемешать поля местами и тп?
new char[100]; buffer[0] = 't'; buffer[1] = 'e'; buffer[2] = 's'; buffer[3] = 't'; buffer[4] = '\0'; std::cout << sizeofbuffer/sizeofchar << std::endl; //??? expecting 100 here but get 8```