Re[2]: Как портировать встроенный класс с java d c++
От: wl. Россия  
Дата: 20.08.09 14:29
Оценка: 30 (2)
Здравствуйте, Sheridan, Вы писали:

S>Приветствую, wl., вы писали:


wl.>> как это можно портировать на с++?

S>Да приблизительно так и будет выглядеть...

S>емнип кактотак или я чегото не понял...


нет, так не получится, компилятор ругается на вызов нестатического метода get_x().

посмотрел как делает джава: она втихиря подставляет указатель на внешний класс (в нашем случае a) в конструктор класса b, и при вызове методов класса a из b подставляет этот указатель.
не очень удобно получается, если методов вызывается очень много, но в принципе должно помочь.
Re: Как портировать встроенный класс с java d c++
От: Sheridan Россия  
Дата: 20.08.09 14:17
Оценка: -1
Приветствую, wl., вы писали:

wl.> как это можно портировать на с++?

Да приблизительно так и будет выглядеть...

class a
 {
public:
     int x = 10;
     int get_x()
     {
         return x;
     }
     class b
     {
         public:
          int _get_x()
         {
             return a::get_x();
         }
    };
};

емнип кактотак или я чегото не понял...
avalon 1.0rc2 rev 300, zlib 1.2.3
build date: 19.08.2009 14:13:36 MSD +04:00
Qt 4.5.2
Matrix has you...
Как портировать встроенный класс с java d c++
От: wl. Россия  
Дата: 20.08.09 13:46
Оценка:
есть примерно такой кусок кода:

class a
{    
    int x = 10;
    int get_x()
    {
        return x;
    }
    class b
    {
        public int _get_x()
        {
            return get_x();
        }
    }
}


как это можно портировать на с++?
Re[2]: Как портировать встроенный класс с java d c++
От: Vamp Россия  
Дата: 20.08.09 14:29
Оценка:
S>Да приблизительно так и будет выглядеть...
Неправильно. Советую перед тем, как что-то советовать, компилировать
Да здравствует мыло душистое и веревка пушистая.
Re: Как портировать встроенный класс с java d c++
От: Ovl Россия  
Дата: 20.08.09 14:30
Оценка:
wl.>как это можно портировать на с++?

нужно вручную отдать ссылку внутреннему классу

class a
{
int x = 10;
int get_x()
{
return x;
}

class b
{
a& _outer;
b(a& outer) : outer(_outer) {}

public int _get_x()
{
return a.get_x();
}
}
}
Read or Die!
Как правильно задавать вопросы
Как правильно оформить свой вопрос
Автор: anvaka
Дата: 15.05.06
Re: Как портировать встроенный класс с java d c++
От: Vamp Россия  
Дата: 20.08.09 14:37
Оценка:
Впрямую — никак. Вложенные классы не имеют прямого доступа к методам внешнего. Можно придумать что-то вроде этого:


class outer;

class inner {
   outer* o;
public:
   inner(outer* o_) : o(o_) {}
   int get_x();
};

class outer {
   inner in;
public:
    outer() : in(this) {}
    int get_x() {return 5;}
};

int inner::get_x() {return o->get_x();}
Да здравствует мыло душистое и веревка пушистая.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.