Как вызвать функцию / передать значение из одного класса в другой в bada, используя функцию друга C ++ - PullRequest
0 голосов
/ 14 декабря 2011

Я знаю, что это основной вопрос c ++, но могу ли я знать, как я могу вызвать функцию / передать значение (elementId) из одного класса в другой в bada, используя функцию друга?

В моем классе формы у меня есть listView, и когда щелкает элемент в listView, я хотел бы передать elementId в подробный отчет, чтобы отобразить информацию в метке (в подробном виде). В мои form.h и .cpp я включил detailsForm.h, могу ли я узнать, как получить доступ к функции в detailForm для отображения информации? В form.h я также объявил

friend class detailedForm;

и когда я попытался использовать одну из функций в detailForm в своем классе формы, а именно displayInfo (); класс формы имеет ошибку, говоря, что displayInfo () не был объявлен

form.h

...
public:
    friend class ChartFormDetail;

Вот мой код для form.cpp

#include "Form.h"
#include "ChartFormDetail.h"
...

void
Form::OnGroupedListViewItemStateChanged(Osp::Ui::Controls::GroupedListView &listView, int groupIndex, int itemIndex, int elementId, Osp::Ui::Controls::ListItemStatus state)
{
    Frame* pFrame = Osp::App::Application::GetInstance()->GetAppFrame()->GetFrame();
    FormMgr* pFormMgr = dynamic_cast<FormMgr*> (pFrame->GetControl("FormMgr"));

    if(pFormMgr == null)
    return;

    pFormMgr->SendUserEvent(FormMgr::REQUEST_DETAILFORM, null);
    //pFormMgr->SendUserEvent(elementId, null);


    switch(elementId)
        {
        case ID_FORMAT_STRING_M12:
            DisplayLabel();
            break;
...
        case ID_FORMAT_STRING_F19:
            DisplayLabel();
            break;
        }
}

detailedForm.h

public:
...
    void DisplayLabel(void);

код для detailsForm.cpp

void
ChartFormDetail::DisplayInfo(void)
{
    pLabel->SetText("Text here");
    RequestRedraw();
}

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

Похоже, displayInfo является функцией-членом CharFormDetail. Это означает, что вы должны вызывать его с экземпляром ChartFormDetail.

Чтобы это работало, вам нужно сделать что-то вроде этого:

ChartFormDetail & details = getDetails();
details.displayInfo();

Это всего лишь пример. Я не знаю, как вы получите экземпляр ChartFormDetails, это очень сильно зависит от вашей архитектуры.

0 голосов
/ 14 декабря 2011

Как вы пытаетесь вызвать displayInfo () в вашем классе?Для доступа к нему вам нужен объект `detailsForm '.Кроме того, если вам нужен доступ к данным listView в вашем классе друзей (подробная форма), вам потребуется ссылка на объект listView.

Если вы ищете пример, чтобы увидеть, как используются функции друзей, вы можетепроверить: http://www.learncpp.com/cpp-tutorial/813-friend-functions-and-classes/

...