Описание тега vtable
A virtual table, or vtable, is a technique used to implement polymorphic functions with dynamic dispatch
0
ответов
Неопределенная ссылка на vtable в классе с виртуальным методом
Я пишу программу ROS и компилирую / связываю с catkin_make. В заголовочном файле я определил класс с помощью виртуального метода. Затем я создаю два подкласса и реализую виртуальный метод. class Data { public: // TODO change to getter/setter when mo…
25 мар '16 в 05:04
1
ответ
Почему деструктор виртуального класса автоматически не добавляется в vtable?
Когда виртуальный класс B наследуется от виртуального базового класса A, если только явно не объявлено виртуальное деструктор в A и B, деструктор B в vtable будет указывать на деструктор A. Зачем? Почему vtable деструктор B не указывает автоматическ…
14 апр '18 в 15:46
3
ответа
C++: прототип виртуального указателя
Я не уверен, документировано ли это где-нибудь. Все мы знаем, что в случае виртуальных функций каждый класс содержит vptr, указатель на массив указателей функций, называемый виртуальной таблицей. Я хочу знать, что является прототипом vptr. Например,…
03 июн '12 в 17:38
3
ответа
Виртуальная функция, вызывающая ошибку сегментации
Я получаю ошибку сегментации, когда пытаюсь получить доступ к виртуальной функции. Код в основном так: class Super { public: Super() { cout << "Ctor Super" << endl; } virtual void test() = 0; }; class Sub : public Super { public: Sub() {…
10 апр '11 в 11:52
3
ответа
Vtable размещение полностью чисто виртуального класса
Согласно моим (ограниченным) знаниям спецификации C++, виртуальная таблица класса с виртуальными членами помещается в определение первого не чистого не встроенного виртуального метода. Как компиляторы обрабатывают классы, которые наследуются от клас…
06 янв '11 в 18:05
2
ответа
"Неопределенная ссылка на vtable в строке" в конструкторе
Я получаю сообщение об ошибке, указанное в заголовке. Я пытаюсь построить класс Line, который унаследовал класс Shape. Я получаю ошибку в Shape(color) {} выполнение в конструкторе строки. Заголовочные файлы (форма и линия в одном, цвет в другом) Sha…
23 апр '13 в 21:09
3
ответа
Доступ к закрытой функции C++ с помощью указателей
Скажи, что у меня есть следующее: class A { private: int a; virtual int f() {return a;} public: A(int t) {a = t;} }; Теперь, как я могу получить доступ int A::f() если мне дают указатель на объект? Я знаю, как получить! void main () { A* x = new A(5…
24 фев '15 в 21:52
2
ответа
Опция компилятора Visual C++ для сброса иерархии классов
Есть ли какая-либо опция компилятора в MS Visual C++, эквивалентная GCC -fdump-class-иерархия? то есть показывает макет таблицы виртуальных функций.
13 июн '10 в 18:16
1
ответ
QObject создает moc-файл, но все еще получает ошибки vtable
Я не могу избавиться от этой ошибки после того, как сделал PrimitivePartsWrapper подклассом QObject (включая макрос Q_OBJECT). undefined reference to `vtable for PrimitivePartsWrapper` (in register.o) Я запустил qmake, и moc_primitive.cpp включен в …
06 авг '11 в 02:10
1
ответ
Множественное наследование, виртуальные функции и виртуальная таблица в C++
Я знаю, что поиск виртуальных функций в vtable намного медленнее, чем прямой вызов функций, поскольку базовый класс должен искать в vtable, чтобы получить производную функцию. Я бродил, было бы еще медленнее, если бы было больше производных слоев кл…
13 июл '14 в 22:23
1
ответ
Can the class have more than one vtable?
say, we have such classes inheritance class A { int a; public: A(){} virtual void f1(){} }; class B { int b; public: B(){} virtual void f2(){} virtual void f3(){} }; class C: public A, public B { int c; public: C(){} virtual void f1(){} virtual void…
26 мар '14 в 08:40
2
ответа
Неопределенная ссылка на vtable... макрос Q_OBJECT
Когда я раскомментирую макрос Q_OBJECT, который мне нужен для сигнального слота, я получаю неопределенную ссылку на vtable для ошибки MyApp, но без макроса он компилируется отлично, но я не могу использовать сигналы и слоты без него. Я думаю, что я …
26 окт '11 в 15:06
4
ответа
Использование отражения для переопределения таблиц виртуальных методов в C#
Есть ли способ изменить таблицы виртуальных методов в C#? как изменить, где указывает виртуальный метод? class A { public virtual void B() { Console.WriteLine("B"); } } class Program { public static void MyB(A a) { Console.WriteLine("MyB"); } public…
01 май '11 в 14:13
2
ответа
Функция, объявленная как Virtual в производном классе, не выполняется, вместо этого выдана ошибка компиляции. Почему?
Я понимаю виртуальную функцию и vTable, поэтому извините, если это тривиальный вопрос, чтобы задать.... Основываясь на концепции vTable и vPtr, объясненной людьми, я понял и ожидаю, что нижеприведенная программа должна работать, но она дает ошибку. …
25 ноя '18 в 13:06
0
ответов
Изменить интерфейс с IUnknown на IDispatch
У меня есть COM-класс, который доступен только через vtable. Он уже разослан клиентам. Я также планирую разрешить доступ к сценариям, введя IDispatch. В моих локальных тестах он показывает, что клиентский код не изменится, но для этого потребуется п…
26 май '15 в 15:33
3
ответа
C++ Полиморфизм. Почему это работает?
Разве это не должно быть неправильно?: A* apb = (A*)&b; //a pointer to b Я ожидаю ошибку или, по крайней мере, предупреждение. Почему это не дает мне никакого предупреждения ни в Visual C++ 2013 (v120), ни в g++ (gcc 4.8.2)? #ifndef A_H #define …
21 ноя '14 в 05:19
2
ответа
Не-виртуальные методы C# в базовом классе все еще несут накладные расходы vtable?
Учитывая, что C# написан для максимальной производительности, есть два способа, которыми мы можем иметь методы базового класса (примечание: мы говорим о классе без состояния, здесь нет полей, только методы): экземпляр класса A обеспечивает базу для …
16 апр '18 в 12:33
3
ответа
Используются ли Vtables только с указателем на базовый класс
Я знаю, что здесь задают много вопросов о vtables, но я все еще немного сбит с толку. Используются ли vtables только тогда, когда у нас есть указатель на базовый класс, чтобы определить, какую виртуальную функцию производных классов вызывать? В моем…
22 мар '16 в 12:09
1
ответ
Объединить символы из нескольких объектных файлов в таблицу (например, vtable) во время соединения
Это может быть невозможно, но я хотел бы сделать что-то похожее на создание vtable во время компоновки. То есть сначала я хочу испускать различные функциональные символы независимо в отдельных объектных файлах. Затем я хотел бы, чтобы компоновщик со…
03 авг '18 в 19:05
2
ответа
Передача указателя метода для нового метода в базовый класс
Я хотел бы иметь возможность вызывать любой произвольный метод (который является универсальным методом), определенный в производном классе от базового класса. Базовый класс не знает о них. Я хотел бы получить этот указатель и смещение виртуальной та…
09 сен '14 в 06:38