2017-01-17 12 views
1

У меня есть задание, где мне нужно преобразовать C++-подобную программу в программу c.Преобразование класса в структуру

Если у меня есть что-то вроде

class B { 
    int var; 
    int somefunction(){ 
     some code here 
    } 
} 

было бы переодеться в

struct B{ 
    int var; 
} 

int somefunction(){ 
    some code here 
} 

В принципе, я должен изменить class к struct каждый раз, когда я вижу это, и если есть функция I теперь нужно вывести его за пределы структуры.

Каков наилучший способ сделать что-то подобное? Я понимаю теорию, но не знаю, как подойти к ней.

+6

'int someFunction (struct B * this)' уверенно? – AlexP

+0

Мне любопытно, почему вы хотите преобразовать 'class' в' struct' –

+1

@Mohsen_Fatemi: C не имеет ключевого слова 'class'? –

ответ

4

Обычно вы передаете указатель на структуру функции. Например, если у вас это C++ код:

class A { 
    private: 
     int x; 
    public: 
     A() : x(0) { 
     } 
     void incx() { 
      x++; 
     } 
}; 

эквивалентный код C будет:

struct A { 
    int x; 
}; 

void init(struct A * a) { // replaces constructor 
    a->x = 0; 
} 

void incx(struct A * a) { 
    a->x++; 
} 

А потом называют это так:

struct A a; 
init(& a); 
incx(& a); 

Но я должен спросить почему вы думаете, что вам нужно преобразовать код C++ в C?

+0

Мне любопытно узнать, в чем причина этого преобразования :) –

+0

Это задание для школы. Мне нужно проанализировать C++-подобную программу, и выход должен быть c-программой – FreeStyle4

+0

. Думаю, я неправильно сформулировал свой вопрос. Это больше требовало наилучшего подхода к тому, как я буду разбирать такой файл. Откройте файл C++, прочитайте файл за строкой, если я вижу класс, измените его на struct и т. Д. – FreeStyle4