类函数原型与定义不匹配 - 如何修复

时间:2011-11-04 21:14:28

标签: c++

此原型与定义不符。我如何解决它?我在b.c.上扔了一个const。我认为可能会这样做。但是不要去

我知道它在定义中需要模板指示符,即使它不使用模板...因为这是以前的错误。

// Prototype

template <class T> class dynamic_array
  {
  public:
    void print_operator(ostream)const;
  };

// Definition

template <class T> void dynamic_array<T>::print_operator(ostream &os=cout)const
  {
  for (int i = 0; i < size; i++) os << array[i] << endl;
  }

4 个答案:

答案 0 :(得分:4)

  1. 您的默认参数在实现中,它应该在原型
  2. 实现需要参考,原型也需要参考

答案 1 :(得分:2)

您在一个地方ostream,在另一个地方ostream&。你应该在两个地方都有ostream&

template <class T> class dynamic_array
{
public:
  void print_operator(ostream&)const;
};

答案 2 :(得分:2)

您正在使用引用,因此请将print_operator()替换为:

void print_operator(ostream&)const;

哦,sizearray必须在别处宣布。

答案 3 :(得分:1)

您的声明需要ostream,但您的定义使用ostream&