使用类方法输出为空

时间:2018-10-10 12:14:37

标签: c++ templates

在下面的代码中,直接调用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 :(得分:3)

当然您不会得到任何输出,因为此方法没有尝试打印任何内容。它只是返回一个数字。

可以在main中进行此操作:

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

这将直接打印此方法返回的值。

或将displayIt的相同逻辑添加到sumit中。

BTW -此问题与C ++模板无关。在普通班级也会发生相同的行为。