Вопросы
Как получить размер std::vector в формате int?
Я попробовал следующий код:
#include
int main () {
std::vector v;
int size = v.size;
}
Но получил ошибку:
cannot convert 'std::vector::size' from type 'std::vector::size_type (std::vector::)() const noexcept' {aka 'long unsigned int (std::vector::)() const noexcept'} to...
Почему код явно вызывает статический метод через указатель, равный null?
Я видел подобный код в нескольких старых проектах:
class Class {
static void Method() {}
};
((Class*)0)->Method();
Этот код содержит неопределенное поведение, так как включает разыменование нулевого указателя (что бы ни происходило после этого). Он действительно не имеет смысла —...
Когда апкастинг незаконен в C++?
Я точно понимаю общую разницу между восходящим и нисходящим приведением типов, особенно в C++. Я знаю, что мы не всегда можем выполнить нисходящее приведение, поскольку преобразование указателя базового класса в указатель производного класса предполагает, что объект базового класса, на который...
Почему объект, возвращаемый по значению, имеет тот же адрес, что и объект внутри метода?
Проблема: Почему адреса переменных a
и b
совпадают?
Я столкнулся с интересным поведением в моем коде на C++, где две переменные a
и b
, каждая из которых объявлена в разных контекстах (функции foo
и main
), имеют одинаковый адрес в памяти. Вот код, который я...
Оценивается ли условие в цикле `for` диапазона C++11 на каждой итерации?
Проблема с вызовом метода в цикле
В коде у меня есть следующий фрагмент:
for(auto& entity : memoryManager.getItems())
entity->update(mFrameTime);
У меня возник вопрос: если memoryManager
содержит 1000 элементов, будет ли memoryManager.getItems()
вызываться 1000 раз (при...
Удален конструктор по умолчанию. Объекты все еще могут быть созданы... иногда
Наивное, оптимистичное и... совершенно ошибочное представление о синтаксисе унифицированной инициализации в C++11
Я думал, что с введением C++11 объекты пользовательских типов должны создаваться с помощью нового синтаксиса , вместо старого (...) (за исключением конструкторов, перегруженных на...
Почему уступает приоритет преобразование указателя над выведенным шаблоном?
У меня возникла проблема с перегрузкой функции в C++, и я не могу понять, почему происходит такое поведение. Я написал функцию для вывода длины строки, которая принимает массив:
template
void foo(const char (&s)[N]) {
std::cout << "array, size=" << N-1 << std::endl;
}
foo("hello"); //...
Почему потоки C++ используют char вместо unsigned char?
Я всегда задавался вопросом, почему стандартная библиотека C++ использует тип char
для реализации basic_[io]stream
и всех его вариантов, а не unsigned char
. Тип char
может быть как знаковым, так и беззнаковым, в зависимости от реализации, что может привести к переполнению и недополнению при...
C++: Как использовать одни и те же имена членов перечисления в разных перечислениях без ошибки переопределения?
У меня есть файл конфигурации, который я включаю во все свои файлы. В нем содержатся различные перечисления (enums), но в каждом перечислении имеются одинаковые названия элементов. Например, вот как выглядит config.h:
enum GameObjectType
{
NINJA_PLAYER
};
enum...
Почему `std::initializer_list` не поддерживает оператор подиндексации?
Вопрос:
Я пишу функцию, которая принимает параметр типа std::initializer_list
, названный list
, и мне необходимо произвести произвольный доступ к элементам этого списка. Было бы удобно использовать list[i]
вместо list.begin()[i]
. Однако, почему в std::initializer_list
не реализован...
Обработка зависимостей заголовочных файлов с помощью CMake
Проблема с CMake: неправильное отслеживание зависимостей в проекте на C++
Я использую CMake для небольшого проекта на C++, и он работает отлично... за одним исключением :x
Когда я изменяю заголовочный файл, обычно это требует перекомпиляции нескольких исходных файлов (тех, которые включают...
Программа, скомпилированная с флагом -g в gcc, работает медленнее, чем та же программа, скомпилированная без -g?
У меня есть программа, которую я компилирую с флагом -O3 для повышения производительности и -g для добавления отладочных символов (в случае сбоя я могу использовать дамп памяти). Однако меня сильно беспокоит один аспект: существует ли производственный штраф из-за использования флага -g?
Когда я...
QT: Шаблонизированный класс с Q_OBJECT
Вопрос: Возможность использования шаблонного класса, наследующего от QObject, с макросом Q_OBJECT
Здравствуйте! У меня возникла проблема с использованием шаблонного класса, который должен наследоваться от QObject и содержать макрос Q_OBJECT в своем объявлении.
Я пытаюсь создать адаптер для...
Неопределенная ссылка на виртуальную таблицу (vtable)
Когда я пытаюсь собрать свою программу на C++, я получаю сообщение об ошибке:
undefined reference to 'vtable...
В чем причина этой проблемы? Как мне это исправить?
К сожалению, я сталкиваюсь с этой ошибкой в следующем коде (класс, о котором идет речь — CGameModule), и никак не могу...
Как очистить переменную stringstream?
Я уже пробовал несколько вариантов,
std::stringstream m; m.empty(); m.clear();
но ни один из них не сработал.
Преимущества использования map над unordered_map при тривиальных ключах?
Недавняя лекция о unordered_map в C++ заставила меня задуматься о том, что в большинстве случаев, где я раньше использовал map, теперь следует использовать unordered_map из-за большей эффективности поиска (амортизированное O(1) против O(log n)). Обычно, когда я использую map, в качестве типа ключа...
Разница между использованием Makefile и CMake для компиляции кода?
Вопрос о различиях между Makefile и CMake для компиляции кода
Я пишу код на C/C++ и использую (GNU) Makefile для компиляции. У меня есть возможность использовать CMake для генерации Makefile. Однако меня интересует, в чем разница между использованием Makefile и CMake при компиляции кода?
Отладка против Релиза в CMake
Проблема компиляции проекта на GCC с использованием CMake
В своем проекте, скомпилированном с помощью GCC, я столкнулся с несколькими вопросами, связанными с использованием CMake:
- Как запустить CMake для каждого типа сборки (debug/release)?
- Как задать флаги компиляции для отладочной и...
Ошибка: запрос члена '..' в '..', который имеет не классный тип
У меня есть класс с двумя конструкторами: один без параметров и один с одним параметром.
Создание объектов с использованием конструктора, который принимает один параметр, работает как ожидалось. Однако, когда я пытаюсь создать объекты с использованием конструктора без параметров, возникает...
Определение typedef для указателя на функцию?
Я изучаю, как динамически загружать DLL, но не могу понять следующую строку кода:
typedef void (*FunctionFunc)();
У меня есть несколько вопросов. Буду признателен, если кто-то сможет на них ответить.
- Зачем используется
typedef
? - Синтаксис выглядит странно; после
void
не должно...