Вопросы по теме 'typeid'

производные классы и проверка типов
Я пытаюсь написать метод, который принимает в качестве аргумента класс, производный от std::string. Метод перегружен несколькими различными сигнатурами функций. Я бы хотел, чтобы компиляция потерпела неудачу, если я попытаюсь вызвать ее с помощью...
133 просмотров
schedule 15.05.2023

Как определить реальный тип объекта во время выполнения в C ++;
Допустим, у нас есть иерархия классов. Внизу у нас есть Base, а вверху - Derived. Как определить класс объекта, даже если он преобразован в указатель базового класса. Base* b = new Derived(): typeid(b).name(); // i want this to tell me that...
23830 просмотров
schedule 08.06.2022

Проверка типа объекта в C++11
У меня есть класс B, который наследуется от A. class A { }; class B : public A { }; И у меня есть три объекта. A* a = new A(); A* a2 = new B(); B* b = new B(); Я хотел бы проверить, является ли a объектом типа A, a2 является...
9393 просмотров
schedule 02.10.2023

Typeid работает некорректно
Я не могу правильно получить функцию typeid. Я что-то упускаю Код: class A { public: int a1; A() { } }; class B: public A { public: int b1; B() { } }; int main() { B tempb; A tempa;...
4849 просмотров
schedule 06.09.2023

Как внедрить имя типа в виде строки в static_assert()?
Проблема Следующее не создается, потому что сообщение не является строковым литералом. template<typename T> struct Foo { Foo() { static_assert( is_pod<T>::value, typeid(T).name() ); } }; В конечном счете, я бы...
1107 просмотров
schedule 05.05.2022

результаты typeid не совпадают
У меня есть функция: void func(unsigned int event) { printf("%u %u\r\n", typeid(event), typeid(unsigned int&)); // prints 5338164 0 printf("%u %u\r\n", typeid(event), typeid(unsigned int)); // prints 21525556 0 }...
665 просмотров
schedule 28.09.2022

Странное поведение информации о типах во время выполнения
У меня есть два класса Base и Derived следующим образом: class Base { public: }; class Derived : public Base { public: }; и основная функция: int main() { Base* ptr = new Derived; std::cout << typeid(*ptr).name()...
89 просмотров
schedule 16.10.2023

C++11 - уникальность typeid
В С++ 11 я использую это typeid(T).name() для моего собственного вычисления хэша. Мне не нужно, чтобы результат был одинаковым между запусками программы или компиляциями. Мне просто нужно, чтобы он был уникальным для типов. Я знаю, что он...
5244 просмотров
schedule 15.03.2024

Можно ли проверить, равен ли объект классу шаблона, не указывая тип шаблона?
Предположим, у меня есть класс: template<typename T> class ChartData { public: ... Теперь я хочу проверить, является ли объект value объектом ChartData: if (value.type() == typeid(ChartData*)) Однако это вызывает ошибку...
167 просмотров
schedule 29.03.2024

Сравнение базовых (производных) типов, на которые указывает std::unique_ptr
Я пишу модульные тесты для проверки различных путей кода с участием фабричного класса. Фабрика возвращает std::unique_ptr базовому типу: class Base {}; class Derived1 : public class Base {}; class Derived2 : public class Base {};...
38 просмотров
schedule 05.03.2024

Загрузка объекта динамического класса
Есть ли способ использовать что-то вроде std::is_base_of на основе строк, сгенерированных typedid(...).name() , а не на самих типах? In extenso, учитывая что-то вроде: class A {...}; class B: public A {...}; A a; B b; std::string sa =...
13 просмотров
schedule 18.08.2023

Временная сложность операций typeid и dynamic_cast в C++
Если оставить в стороне все опасения по поводу необходимости использования typeid и dynamic_cast и их сомнительного влияния на обслуживание кода, есть ли какая-либо информация о производительности этих двух механизмов самоанализа динамического...
53 просмотров