在类的单独编译中没有与重载函数匹配的函数

时间:2013-10-18 05:27:34

标签: c++ class overloading ambiguous

所以我遇到了问题,我不知道如何解释,所以我会告诉你我的代码。

这是老师写的主要内容:

#include <iostream>
#include "distance.h"
using std::cout;
using std::endl;

// Program starts here
int main() {
  // Test the constructors
  Distance one, two(5), three(5, 'F');

  // Test the Accessor
  cout << "one in meters: " << one.meters() << endl;
  cout << "two in meters: " << two.meters() << endl;
  cout << "three in meters: " << three.meters() << endl;

  // Use the Mutator
  one.set_meters(8);

  // Use GetDistance
  cout << "one in fathoms: " << one.GetDistance('A') << endl;

  // Use SetDistance
  one.SetDistance(50, 'C');

  // Use Output
  one.Output(); // 'Output' is ambiguous ' Candidates are: void Output() void Output(char)
  one.Output('C');
  one.Output('M');

  // This ends our program
  return 0;
}

这是我的标题:

#ifndef DISTANCE_H_
#define DISTANCE_H_

#include <iostream>
using std::cout;
using std::endl;
using std::cin;

class Distance  {
public:
  Distance();
  Distance(double meters);
  Distance(double meters, char unit);
  void SetDistance(double, char);
  double GetDistance(char);
  double meters();
  void Output();
  void Output(char);
  void set_meters();
  void set_meters(double);
  void set_meters(double, char);
private:
  double meters_;

};


#endif /* DISTANCE_H_ */

我的实现有:

void Distance::Output()  {
  Output('M');
}

void Distance::Output(char unit)  {
  cout << 4.5;
}

我不明白set_meters()是如何正常工作但我的Output()是不明确的。如果没有发送任何值或者发送了一个值来使用它,我想让Output()默认为'M'。对不起,所有的代码,但我不确定什么是重要的,什么是不重要的。如果您需要我的所有实现,我可以添加它。

0 个答案:

没有答案