Форум программистов, компьютерный форум CyberForum.ru

Преобразование классов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать программу, которая определяет, какая часть отрезка окрашен http://www.cyberforum.ru/cpp-beginners/thread1156003.html
Автомат проводит кистью по отрезку от точки A до точки B, а потом от точки C до точки D. Написать программу, которая определяет, какая часть отрезка окрашена.
C++ Заполнить матрицу ЛП, от правого верхнего угла по диагонали: влево - вниз http://www.cyberforum.ru/attachments/243234d1363129946 не могу понять что у меня не правильно, помогите пожалуйста. #include <stdio.h> #include <conio.h> #include <iostream> int main() { setlocale(LC_ALL, "Russian"); int n, k, j, i; int *a= new int; http://www.cyberforum.ru/cpp-beginners/thread1156002.html
C++ Разделить старшие и младшие биты в переменной
Объясните дураку работу с битовыми операциями... Есть у меня массив, где первый элемент это 32 младших бита, а второй - 32 старших unsigned int sp = {0x11111111, 0x22222222}; Теперь мне это нужно записать в переменную, делаю вот так long long var = (sp << 32) | (sp << 32); Далее провожу операции над этой переменной, а затем мне заново нужно разделить старшие и младшие биты. Пытаюсь сделать...
Переписать программу с паскаля на Си++ C++
Нужно переписать программу с паскаля на си ++. а то у меня не получается... uses crt; label l1,l2,l3,l4,l5; type osa=record x:integer; Y:integer; life:integer; baby:integer; xp:integer; Yp:integer; end;
C++ Создать динамический список, поменять местами последний и первый элементы списка, предпоследний и второй и т.д. http://www.cyberforum.ru/cpp-beginners/thread1155950.html
Всем привет. Подкиньте идею, весь мозг сломал. Задание:Создать динамический список. Поменять местами последний и первый элементы списка, предпоследний и второй и т. д.. Список создал, даже местами поменял, но поменял только заново инициализированный(созданный из массива) список, а как поменять местами заранее созданный список (добавленные, удаленные элементы) никак не соображу. Понимаю, что нужно...
C++ Удалить из строки все пробелы, расположенные перед знаком препинания Дана строка до точки, группа символов в которой между пробелами считается словом, знаки препинания от слова пробелом не отделяются. Удалить из строки все пробелы, расположенные перед знаком препинания. подробнее

Показать сообщение отдельно
locm
1898 / 653 / 63
Регистрация: 28.10.2011
Сообщений: 1,974
Записей в блоге: 2
24.04.2014, 17:14  [ТС]     Преобразование классов
Цитата Сообщение от DrOffset Посмотреть сообщение
Что за язык?
PureBasic.

Цитата Сообщение от DrOffset Посмотреть сообщение
Поддерживает ли он множественное наследование?
Он даже ООП не поддерживает, но это и не важно, т. к. код специфический и предназначен для компиляции в MS VS C++. В C++ Builder и MinGW компилируется, но не работает вылетая. Нужна полная бинарная совместимость с классами VS C++.
Цитата Сообщение от DrOffset Посмотреть сообщение
Получает смещение базы относительно наследника, возвращает адрес объекта нужного базового класса.
Смещение это понятно, но как тогда быть в приватным содержимым класса?

Цитата Сообщение от DrOffset Посмотреть сообщение
Просто this (т.е. без преобразования) передавать нельзя, потому что адреса объектов базовых классов и наследника при множественном наследовании не совпадают.
Это я уже понял (в ходе экспериментов). Поэтому хочу понять как устроен класс (какова его структура в скомпилированном виде) именно в VS C++.

Цитата Сообщение от DrOffset Посмотреть сообщение
Что конкретно нужно сделать в этом другом ЯП?
Нужно сэмулировать класс, полностью совместимый по структуре с аналогичным в VS C++, но для этого необходимо знать как располагаются данные в памяти.
Создаю DLL (что-то типа плагина), в которой создается объект и передается вызывающей программе.

В простейшем случае, класс эмулирую таким образом. Представим что имеется подобный класс.
C++
1
2
3
4
5
6
7
8
9
10
class IACTIVEMODEL
 { public:
      virtual VOID initialize (ICOMPONENT *cpt) = 0;
      virtual ISPICEMODEL *getspicemodel (CHAR *primitive) = 0;
 
  private:
      Int x;
      Int y;
 
 };
Эмулирую таким образом.
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Structure ClassParam
  *vt ;pointer to virtual table as first entry 
  ; Приватные переменные класса.
  x.i
  y.i
EndStructure 
 
EnableASM
 
Procedure NEW()   ; Создание объекта.
  Protected *Class.ClassParam=0
  
  *Class = AllocateMemory(SizeOf(ClassParam)) 
  If *Class
    *Class\vt = ?ClassFunct
  EndIf   
  
  ProcedureReturn *Class
EndProcedure
 
Procedure initialize(*cpt.ICOMPONENT)
  Protected *This.ClassParam
  MOV *This, ecx
  
EndProcedure
 
Procedure.i getspicemodel(*sPrimitive)
  Protected *This.ClassParam
  MOV *This, ecx
  
  ProcedureReturn 0
EndProcedure
 
DataSection
  ClassFunct: ; Таблица методов класса.
  Data.i @initialize()
  Data.i @getspicemodel()
EndDataSection
В итоге получается объект, совместимый с скомпилированным кодом в VS C++.
 
Текущее время: 05:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru