C ++将模板类传递给void函数

时间:2016-02-20 02:26:29

标签: c++ function class templates

我想创建一个类调用Array并将对象arr和arr1传递给一个名为" fun"的函数。但是我的编译器告诉我它预期在"&"之前的初级表达。令牌&#34 ;.我错过了什么?

.h文件

#ifndef ARRAY_H_INCLUDED
#define ARRAY_H_INCLUDED

template <typename T, int SIZE>
class Array
{
  T values[SIZE];
};

template <typename T, int SIZE>
void fun (const Array<T, SIZE>& a,const Array<T, SIZE>& a1,int index)
{
}

#endif // ARRAY_H_INCLUDED


template <typename T, int SIZE>
void fun (const StaticArray<T, SIZE>& a,const StaticArray<T, SIZE>& a1,int index)
{
}

.CPP

#include <iostream>
using namespace std;

#include "Array.h"

template <typename T, int SIZE>
void fun (const Array<T, SIZE>&,const Array<T, SIZE>&,int);

int main()
{
  int i=-1;
  Array<double, 5> arr;
  Array<bool, 5> arr1;
  fun(Array<double, 5>& arr,Array<double, 5>& arr1,i);  //error expected primary-expression before '&' token
}

1 个答案:

答案 0 :(得分:1)

fun(Array<double, 5>& arr,Array<double, 5>& arr1,i);

应该是

fun(arr,arr1,i);

您的错误是您正在错误地传递数组。