вызов функции-члена другого класса из другого класса - PullRequest
3 голосов
/ 13 февраля 2011

У меня есть два класса A и B. Элемент управления находится внутри одной из функций-членов класса A. Функция-член вычисляет результат, и теперь я хочу отправить это значение одной из функций-членов класса B, я попробовал следующим образом, пока это не работает

int memberFunctionOfA()
{
... //results are stored in some temporary value, say temp

B::memberFunctionOfB(temp);  // the way i tried
}

Компилятор сообщил об ошибке. Я тоже пробовал как

B obj;
obj.memberFunctionOfB(temp);

Оба дали мне ошибки, что memberFunctionOfB не может быть вызван. Может кто-нибудь сказать мне, что я пропускаю

Редактировать

Класс B не наследуется от A. Они оба независимы. Обе функции-члены являются открытыми и не статичными

Ответы [ 2 ]

3 голосов
/ 13 февраля 2011

Ваша вторая попытка:

int memberFunctionOfA()
{
... //results are stored in some temporary value, say temp

    B obj;
    obj.memberFunctionOfB(temp);
}

..., выглядит вполне корректно.Нам понадобится определение B, чтобы помочь в дальнейшем.Определение B должно иметь минимальное значение, при условии, что функция-член в B нестатична:

class B
{
public:
  void memberFunctionOfB(const TypeOfTemp &temp);
};

// Later in class A's definition
class A
{
public:
  int memberFunctionOfA()
  {
    ... //results are stored in some temporary value, say temp

    B b;
    b.memberFunctionOfB(temp);
  }
};

Если функция-член в B статическая, то это должно работать:

class B
{
public:
  static void memberFunctionOfB(const TypeOfTemp &temp);
};

...

class A
{
public:
  int memberFunctionOfA()
  {
    ... //results are stored in some temporary value, say temp

    B::memberFunctionOfB(temp);
  }
};
1 голос
/ 13 февраля 2011

После просмотра вашего комментария:

Компилятор выдает «Нет соответствующего вызова функции B :: B ()»

Это означает, что по умолчанию нет конструктора длякласс B.В вашей реализации конструктор B должен принимать параметр.

Таким образом, либо вы добавляете конструктор по умолчанию в ваш класс, либо передаете аргумент вашему конструктору при создании его экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...