LINUX.ORG.RU

как это на СИ?


0

0

вот это...
class re{
        pc* a;
        pc_excld* b;
public:
        re(const char* s){
                const char* err; int erro;
                a = pc_cli(s, NULL, &err, &erro, 0);
                b = pc_st(r, 0, &err);
        }
        ~re(){
                if(a) pc_free(a);
                if(b) pc_free(b);
        }
        int sett(const char* s, int l){
                int m[30];
                return pc_ex(l,m);
        }
        int sett(const char* s, int l, int* m, int xl){
                return pc_ex(l,m, xl);
        }
};

re str1("(?i)\\nDelivered-To:\\s*(.*?)[\r\n]");
re str2("(?i)\\nX-ResentFrom:\\s*(\\d+)");
в обычном классе конструктор в виде функции, а что делать с 2мя последними строками?
anonymous
Ответ на: комментарий от jtootf

Re^2: как это на СИ?

> во-первых это не C, а C++. а во-вторых - в чём вопрос-то?

Телепаты подсказывают, что он хочет этот код переписать на ц.

gaa ★★
()

Есть подозрение, что в коде бред. К примеру, откуда r в конструкторе?

balodja ★★★
()
Ответ на: комментарий от generatorglukoff

->struct re *str1 = new_re("(?i)\\nDelivered-To:\\s*(.*?)[\r\n]");
вроде в структурах нельзя объявлять функции?
просто я хочу понять  вот что...
ест некий класс
class re{
...
};
re str1("(?i)\\nDelivered-To:\\s*(.*?)[\r\n]");
дальше доступ к структуре осуществляется вот так
int m = str1.sett(h, hl);

странно, везде читал что доступ к структуре делается 
имя_структуры.элемент
а тут в классе выходит как-то иначе?

anonymous
()
Ответ на: комментарий от anonymous

У методов классов в С++ есть неявный аргумент this. Чтобы перевести это на С нужно просто добавить этот аргумент в функцию явно.

То есть в С++:

pobj->foo(arg);

А в С:

foo(pobj, arg);

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

ладно уже пости победил =)
Вот когда 2 функции различаются только колличеством применаемых аргементов
        int sett(const char* s, int l){
                int m[30];
                return pc_ex(l,m);
        }
        int sett(const char* s, int l, int* m, int xl){
                return pc_ex(l,m, xl);
        }
то в си это нужно делать 2мя различными функциями или есть способ оставить как есть?
А то еще проверку на колличество аргументов делать ;-\

anonymous
()

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

rudchenkos
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.