首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

:类的基本应用中,调用了一个小函数,但出错了,还有请教模板可以在类中用么

2012-04-08 
请教高手:类的基本应用中,调用了一个小函数,但出错了,还有请问模板可以在类中用么?#includeiostream.hcl

请教高手:类的基本应用中,调用了一个小函数,但出错了,还有请问模板可以在类中用么?
#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)


{
min_value = arr[0];
for(T i=1; i <lenth; i++)
{
if (arr[i] <min_value)
min_value = arr[i];
}
return min_value;
}


int main()
{
Array <int> a;
int c=6;
int ar[6]={2,5,1,8,3,9};

int min=a.min_array(ar,c);
cout < <min < <endl;


system( "PAUSE ");
return EXIT_SUCCESS;
}

[解决办法]
1、你的类设计和实现不一致
声明中int min_array();
实现时为int Array::min_array(int arr[],int l),自然出错了
2、int ar[c]={2,5,2,7,3,7};
ar是个临时变量,在栈中,编译器要求c应为一个const的

热点排行