:类的基本应用中,调用了一个小函数,但出错了,还有请教模板可以在类中用么
请教高手:类的基本应用中,调用了一个小函数,但出错了,还有请问模板可以在类中用么?
#include <iostream.h>
class Array
{
public:
int min_array();
// int arr[100];
int min_val;
// int l;
};
/*template <class _t, int size>
_t Array::min_array(const _t (&ar)[size])
{
_t min_val=ar[0];
for(int i=1;i <size;i++)
{
if(ar[i] <min_val)min_val=ar[i];
}
return min_val;
}*/
int Array::min_array(int arr[],int l)
{
min_val=arr[0];
for(int i=1;i <l;i++)
{
if(arr[i] <min_val)min_val=arr[i];
}
return min_val;
}
void main()
{
Array a;
int c=6;
int ar[c]={2,5,2,7,3,7};
int min=a.min_array(ar,c);
cout < <min < <endl;
}
编译结果:
--------------------Configuration: test1 - Win32 Debug--------------------
Compiling...
test1.cpp
E:\计算机资料\vc\test1.cpp(46) : error C2511: 'min_array ' : overloaded member function 'int (int [],int) ' not found in 'Array '
E:\计算机资料\vc\test1.cpp(24) : see declaration of 'Array '
E:\计算机资料\vc\test1.cpp(60) : error C2057: expected constant expression
E:\计算机资料\vc\test1.cpp(60) : error C2466: cannot allocate an array of constant size 0
E:\计算机资料\vc\test1.cpp(61) : error C2660: 'min_array ' : function does not take 2 parameters
Error executing cl.exe.
test1.obj - 4 error(s), 0 warning(s)
------解决方案--------------------
修改如下:
#include <iostream>
using namespace std;
class Array
{
public:
int min_array(int arr[],int l);
// int arr[100];
int min_val;
// int l;
};
/*template <class _t, int size>
_t Array::min_array(const _t (&ar)[size])
{
_t min_val=ar[0];
for(int i=1;i <size;i++)
{
if(ar[i] <min_val)min_val=ar[i];
}
return min_val;
}*/
int Array::min_array(int arr[],int l)
{
min_val=arr[0];
for(int i=1;i <l;i++)
{
if(arr[i] <min_val)min_val=arr[i];
}
return min_val;
}
void main()
{
Array a;
int c=6;
int ar[6]={2,5,2,7,3,7};
int min=a.min_array(ar,c);
cout < <min < <endl;
}
------解决方案--------------------
模板可以在类中用么?
不知道什么意思。
模板通常用来定义一个类,或者一个函数。
然后,通过具体的参数类型,具现类。或者函数。
------解决方案--------------------
我大概粗略地改了一下。
你看看你是不是这个意思?
#include <cstdlib>
#include <iostream>
using namespace std;
template <class T>
class Array
{
private:
T min_value;
public:
T min_array(T arr[], T lenth);
};
template <class T>
T Array <T> ::min_array(T arr[], T lenth)
#include <iostream.h>
class Array
{
public:
int min_array();
// int arr[100];
int min_val;
// int l;
};
/*template <class _t, int size>
_t Array::min_array(const _t (&ar)[size])
{
_t min_val=ar[0];
for(int i=1;i <size;i++)
{
if(ar[i] <min_val)min_val=ar[i];
}
return min_val;
}*/
int Array::min_array(int arr[],int l)
{
min_val=arr[0];
for(int i=1;i <l;i++)
{
if(arr[i] <min_val)min_val=arr[i];
}
return min_val;
}
void main()
{
Array a;
int c=6;
int ar[c]={2,5,2,7,3,7};
int min=a.min_array(ar,c);
cout < <min < <endl;
}
编译结果:
--------------------Configuration: test1 - Win32 Debug--------------------
Compiling...
test1.cpp
E:\计算机资料\vc\test1.cpp(46) : error C2511: 'min_array ' : overloaded member function 'int (int [],int) ' not found in 'Array '
E:\计算机资料\vc\test1.cpp(24) : see declaration of 'Array '
E:\计算机资料\vc\test1.cpp(60) : error C2057: expected constant expression
E:\计算机资料\vc\test1.cpp(60) : error C2466: cannot allocate an array of constant size 0
E:\计算机资料\vc\test1.cpp(61) : error C2660: 'min_array ' : function does not take 2 parameters
Error executing cl.exe.
test1.obj - 4 error(s), 0 warning(s)
------解决方案--------------------
修改如下:
#include <iostream>
using namespace std;
class Array
{
public:
int min_array(int arr[],int l);
// int arr[100];
int min_val;
// int l;
};
/*template <class _t, int size>
_t Array::min_array(const _t (&ar)[size])
{
_t min_val=ar[0];
for(int i=1;i <size;i++)
{
if(ar[i] <min_val)min_val=ar[i];
}
return min_val;
}*/
int Array::min_array(int arr[],int l)
{
min_val=arr[0];
for(int i=1;i <l;i++)
{
if(arr[i] <min_val)min_val=arr[i];
}
return min_val;
}
void main()
{
Array a;
int c=6;
int ar[6]={2,5,2,7,3,7};
int min=a.min_array(ar,c);
cout < <min < <endl;
}
------解决方案--------------------
模板可以在类中用么?
不知道什么意思。
模板通常用来定义一个类,或者一个函数。
然后,通过具体的参数类型,具现类。或者函数。
------解决方案--------------------
我大概粗略地改了一下。
你看看你是不是这个意思?
#include <cstdlib>
#include <iostream>
using namespace std;
template <class T>
class Array
{
private:
T min_value;
public:
T min_array(T arr[], T lenth);
};
template <class T>
T Array <T> ::min_array(T arr[], T lenth)