c++ ×127
Создан 03.01.2025
0
голоса
2
ответов
9
просмотров
Как получить размер 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...
0
голоса
0
ответов
2
просмотров
Почему код явно вызывает статический метод через указатель, равный null?

Я видел подобный код в нескольких старых проектах:

class Class {
    static void Method() {}
};

((Class*)0)->Method();

Этот код содержит неопределенное поведение, так как включает разыменование нулевого указателя (что бы ни происходило после этого). Он действительно не имеет смысла —...

0
голоса
3
ответов
7
просмотров
Когда апкастинг незаконен в C++?

Я точно понимаю общую разницу между восходящим и нисходящим приведением типов, особенно в C++. Я знаю, что мы не всегда можем выполнить нисходящее приведение, поскольку преобразование указателя базового класса в указатель производного класса предполагает, что объект базового класса, на который...

0
голоса
3
ответов
4
просмотров
Почему объект, возвращаемый по значению, имеет тот же адрес, что и объект внутри метода?

Проблема: Почему адреса переменных a и b совпадают?

Я столкнулся с интересным поведением в моем коде на C++, где две переменные a и b, каждая из которых объявлена в разных контекстах (функции foo и main), имеют одинаковый адрес в памяти. Вот код, который я...

0
голоса
1
ответов
0
просмотров
Оценивается ли условие в цикле `for` диапазона C++11 на каждой итерации?

Проблема с вызовом метода в цикле

В коде у меня есть следующий фрагмент:

for(auto& entity : memoryManager.getItems()) 
    entity->update(mFrameTime);

У меня возник вопрос: если memoryManager содержит 1000 элементов, будет ли memoryManager.getItems() вызываться 1000 раз (при...

0
голоса
0
ответов
7
просмотров
Удален конструктор по умолчанию. Объекты все еще могут быть созданы... иногда

Наивное, оптимистичное и... совершенно ошибочное представление о синтаксисе унифицированной инициализации в C++11

Я думал, что с введением C++11 объекты пользовательских типов должны создаваться с помощью нового синтаксиса , вместо старого (...) (за исключением конструкторов, перегруженных на...

0
голоса
0
ответов
0
просмотров
Почему уступает приоритет преобразование указателя над выведенным шаблоном?

У меня возникла проблема с перегрузкой функции в C++, и я не могу понять, почему происходит такое поведение. Я написал функцию для вывода длины строки, которая принимает массив:

template 
void foo(const char (&s)[N]) {
    std::cout << "array, size=" << N-1 << std::endl;
}

foo("hello"); //...
0
голоса
2
ответов
0
просмотров
Почему потоки C++ используют char вместо unsigned char?

Я всегда задавался вопросом, почему стандартная библиотека C++ использует тип char для реализации basic_[io]stream и всех его вариантов, а не unsigned char. Тип char может быть как знаковым, так и беззнаковым, в зависимости от реализации, что может привести к переполнению и недополнению при...

0
голоса
2
ответов
0
просмотров
C++: Как использовать одни и те же имена членов перечисления в разных перечислениях без ошибки переопределения?

У меня есть файл конфигурации, который я включаю во все свои файлы. В нем содержатся различные перечисления (enums), но в каждом перечислении имеются одинаковые названия элементов. Например, вот как выглядит config.h:

enum GameObjectType
{
     NINJA_PLAYER
};

enum...
0
голоса
1
ответов
2
просмотров
Почему `std::initializer_list` не поддерживает оператор подиндексации?

Вопрос:

Я пишу функцию, которая принимает параметр типа std::initializer_list, названный list, и мне необходимо произвести произвольный доступ к элементам этого списка. Было бы удобно использовать list[i] вместо list.begin()[i]. Однако, почему в std::initializer_list не реализован...

0
голоса
5
ответов
3
просмотров
Обработка зависимостей заголовочных файлов с помощью CMake

Проблема с CMake: неправильное отслеживание зависимостей в проекте на C++

Я использую CMake для небольшого проекта на C++, и он работает отлично... за одним исключением :x

Когда я изменяю заголовочный файл, обычно это требует перекомпиляции нескольких исходных файлов (тех, которые включают...

0
голоса
0
ответов
0
просмотров
Программа, скомпилированная с флагом -g в gcc, работает медленнее, чем та же программа, скомпилированная без -g?

У меня есть программа, которую я компилирую с флагом -O3 для повышения производительности и -g для добавления отладочных символов (в случае сбоя я могу использовать дамп памяти). Однако меня сильно беспокоит один аспект: существует ли производственный штраф из-за использования флага -g?

Когда я...

0
голоса
3
ответов
2
просмотров
QT: Шаблонизированный класс с Q_OBJECT

Вопрос: Возможность использования шаблонного класса, наследующего от QObject, с макросом Q_OBJECT

Здравствуйте! У меня возникла проблема с использованием шаблонного класса, который должен наследоваться от QObject и содержать макрос Q_OBJECT в своем объявлении.

Я пытаюсь создать адаптер для...

5
голоса
5
ответов
55
просмотров
Неопределенная ссылка на виртуальную таблицу (vtable)

Когда я пытаюсь собрать свою программу на C++, я получаю сообщение об ошибке:

undefined reference to 'vtable...

В чем причина этой проблемы? Как мне это исправить?

К сожалению, я сталкиваюсь с этой ошибкой в следующем коде (класс, о котором идет речь — CGameModule), и никак не могу...

6
голоса
5
ответов
14
просмотров
Как очистить переменную stringstream?

Я уже пробовал несколько вариантов,

std::stringstream m; m.empty(); m.clear();

но ни один из них не сработал.

5
голоса
5
ответов
11
просмотров
Преимущества использования map над unordered_map при тривиальных ключах?

Недавняя лекция о unordered_map в C++ заставила меня задуматься о том, что в большинстве случаев, где я раньше использовал map, теперь следует использовать unordered_map из-за большей эффективности поиска (амортизированное O(1) против O(log n)). Обычно, когда я использую map, в качестве типа ключа...

5
голоса
1
ответов
15
просмотров
Разница между использованием Makefile и CMake для компиляции кода?

Вопрос о различиях между Makefile и CMake для компиляции кода

Я пишу код на C/C++ и использую (GNU) Makefile для компиляции. У меня есть возможность использовать CMake для генерации Makefile. Однако меня интересует, в чем разница между использованием Makefile и CMake при компиляции кода?

5
голоса
4
ответов
13
просмотров
Отладка против Релиза в CMake

Проблема компиляции проекта на GCC с использованием CMake

В своем проекте, скомпилированном с помощью GCC, я столкнулся с несколькими вопросами, связанными с использованием CMake:

  1. Как запустить CMake для каждого типа сборки (debug/release)?
  2. Как задать флаги компиляции для отладочной и...
5
голоса
5
ответов
12
просмотров
Ошибка: запрос члена '..' в '..', который имеет не классный тип

У меня есть класс с двумя конструкторами: один без параметров и один с одним параметром.

Создание объектов с использованием конструктора, который принимает один параметр, работает как ожидалось. Однако, когда я пытаюсь создать объекты с использованием конструктора без параметров, возникает...

5
голоса
5
ответов
15
просмотров
Определение typedef для указателя на функцию?

Я изучаю, как динамически загружать DLL, но не могу понять следующую строку кода:

typedef void (*FunctionFunc)();

У меня есть несколько вопросов. Буду признателен, если кто-то сможет на них ответить.

  1. Зачем используется typedef?
  2. Синтаксис выглядит странно; после void не должно...