Вызов функции другого класса через "."
От: betauser  
Дата: 28.10.05 21:01
Оценка:
Итак...

есть следующее:

class World_Cpp
{

  void foo();
};

class World
{

  operator World_Cpp& ();


  World_Cpp* pObject;
};


можно ли как-нибудь сделать такое без написания лишнего кода:

{
  World w;

  w.foo();
}


т.е. вызвать функцию у World_Cpp объекта pObject.



спасибо.
Re: Вызов функции другого класса через "."
От: sch  
Дата: 28.10.05 21:44
Оценка:
B>можно ли как-нибудь сделать такое без написания лишнего кода:
Мона

#include <iostream>

struct B {
    void f() {
        std::cout<<"Будь смел, как лев. Никем и никаким"<<std::endl;
        std::cout<<"Врагом и бунтом ты не победим."<<std::endl;
    }
    
    void g() {
        std::cout<<"Пока не двинулся на перерез"<<std::endl;
        std::cout<<"На Дунсенанский холм Биранмскй лес."<<std::endl;
    }
};

struct A {
    B b;
    
    B *operator->() {
        return &b;
    }
};

int main() {
    A a;
    a->f();
    a->g();

    return 0;
}


P.S. А еще лучше возьми кнжку и почитай, C++ -- не то язык, на котором можно программировать без серьезного и планомерного ищучения оного.
P.P.S. Перевод Пастернака цитирую по памяти
Re[2]: Вызов функции другого класса через "."
От: betauser  
Дата: 29.10.05 07:00
Оценка:
Здравствуйте, sch, Вы писали:

sch>
sch>int main() {
sch>    A a;
    a->>f();
    a->>g();
sch>


sch>P.S. А еще лучше возьми кнжку и почитай, C++ -- не то язык, на котором можно программировать без серьезного и планомерного ищучения оного.


много написал... но!

Вообще-то, как звучит из названия темы, мне нужно вызвать через ".", а не через "->".
Re[3]: Вызов функции другого класса через "."
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 29.10.05 07:58
Оценка:
Здравствуйте, betauser, Вы писали:

B>много написал... но!

B>Вообще-то, как звучит из названия темы, мне нужно вызвать через ".", а не через "->".

Опять же, в книжке можно почерпнуть знания о том, что
А. в C++ возможна перегрузка операторов...
Б. ...но не всех
и как раз таки "точку" перегрузить низзя.
HgLab: Mercurial Server and Repository Management for Windows
Re: Вызов функции другого класса через "."
От: igna Россия  
Дата: 29.10.05 08:39
Оценка: :)
Здравствуйте, betauser, Вы писали:

B>можно ли как-нибудь сделать такое без написания лишнего кода


А как сделать такое с написанием лишнего кода?
Хотелось бы посмотреть, чтобы иметь представление о том, что является лишним.
Ведь возможно ответ, который я хочу дать, использует лишний код.
Re[2]: Вызов функции другого класса через "."
От: _Winnie Россия C++.freerun
Дата: 29.10.05 10:58
Оценка: :)
Здравствуйте, sch, Вы писали:


B>>можно ли как-нибудь сделать такое без написания лишнего кода:

sch>Мона

sch>

sch>        std::cout<<"Будь смел, как лев. Никем и никаким"<<std::endl;
sch>        std::cout<<"Врагом и бунтом ты не победим."<<std::endl;

sch>        std::cout<<"Пока не двинулся на перерез"<<std::endl;
sch>        std::cout<<"На Дунсенанский холм Биранмскй лес."<<std::endl;
sch>


sch>P.P.S. Перевод Пастернака цитирую по памяти

Кракозябры в консоли
Правильно работающая программа — просто частный случай Undefined Behavior
Re: Вызов функции другого класса через "."
От: Daevaorn Россия  
Дата: 29.10.05 11:59
Оценка: 1 (1) +1
Здравствуйте, betauser, Вы писали:


B>можно ли как-нибудь сделать такое без написания лишнего кода:


открытое наследование
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.