Нулевой вывод при использовании методов класса - PullRequest
0 голосов
/ 10 октября 2018

В следующем коде я не получаю вывод от прямого вызова функции sumit (), но когда я вызываю ее через другую функцию displayIt () (которая вызывает sumit ()), она отображает вывод.Как я могу это исправить?И, пожалуйста, также объясните, что происходит?

#include<iostream>
#include<string>
using namespace std;


template <typename C>

class ABC
{

private:
  C num1, num2;

public:
  ABC(C a, C b)
  {
      num1 = a;
      num2 = b;
  }

void displayIt()
  {
      cout << "A+B:" << sumit() << endl;
  }

C sumit() { return num1 + num2; }

};

int main()
{
ABC<int> o1(2, 3);
ABC<string> o2("ABC", "XYZ");

//It doesn't display aything...
cout << "Call-1: " << endl;
o1.sumit();
o2.sumit();

//It displays the output...
cout << "Call-2: " << endl;
o1.displayIt();
o2.displayIt();

system("pause");

}

1 Ответ

0 голосов
/ 10 октября 2018

Конечно, вы не получите вывод, потому что этот метод не пытается ничего напечатать.Он просто возвращает число.

Либо сделайте это в main:

cout << o1.sumit() << endl;
cout << o2.sumit() << endl;

, который будет напрямую печатать значение, возвращаемое этим методом.

Или добавить ту же логикуdisplayIt до sumit.

BTW - Этот вопрос не имеет отношения к шаблону C ++.Такое же поведение произошло бы в обычном классе.

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