如题 , 编译时总是说 [Error] ld returned 1 exit status (编译器dev c++)
`#include<iostream>
using namespace std;
template <typename t>
class CValue {
t data[5];
public:
CValue() {
cout<<"please input 5 numbers"<<endl;
for(int i = 0; i < 5; i++)
cin>>data[i];
}
friend t Max(CValue <t> &a);
friend t Min(CValue <t> &a);
};
template <typename t> t Max(CValue <t> &a) {
t x = a.data[0];
for(int i = 1; i < 5; i++)
if(x < a.data[1]) x = a.data[1];
return x;
}
template <typename t> t Min(CValue <t> &a) {
t min = a.data[0];
for(int i = 1; i < 5; i++)
if(min > a.data[1]) min = a.data[1];
return min;
}
int main() {
cout<<"整数对象a,";
CValue<int> a;
cout<<"浮点数对象b,";
CValue<float> b;
cout<<"整数元素对象a的元素最大值为:"<<Max(a)<<endl;
cout<<"整数元素对象a的元素最小值为:"<<Min(a)<<endl;
cout<<"浮点数元素对象b的元素最大值为:"<<Max(b)<<endl;
cout<<"浮点数元素对象b的元素最小值为:"<<Min(b)<<endl;
}
`
这个错是因为你忘记在main
函数里写返回了啊!!!
- 修改了一下,看报错的行数,你就知道自己错哪里了。
- 还有取最大小值
if(x < a.data[1]) x = a.data[1];
下标应该是i
- 多用花括号,哪怕只有一行语句,保证程序可读性。
#include<iostream>
using namespace std;
template <typename t>
class CValue {
t data[5];
public:
CValue() {
cout<<"please input 5 numbers"<<endl;
for(int i = 0; i < 5; i++)
cin>>data[i];
}
friend t Max(CValue <t> &a);
friend t Min(CValue <t> &a);
};
template <typename t> t Max(CValue <t> &a) {
t x = a.data[0];
for(int i = 1; i < 5; i++)
{
if(x < a.data[i]){
x = a.data[i];
}
}
return x;
}
template <typename t> t Min(CValue <t> &a) {
t min = a.data[0];
for(int i = 1; i < 5; i++){
if(min > a.data[i]){
min = a.data[i];
}
}
return min;
}
int main() {
cout<<"整数对象a,";
CValue<int> a;
cout<<"浮点数对象b,";
CValue<float> b;
cout<<"整数元素对象a的元素最大值为:"<<Max(a)<<endl;
cout<<"整数元素对象a的元素最小值为:"<<Min(a)<<endl;
cout<<"浮点数元素对象b的元素最大值为:"<<Max(b)<<endl;
cout<<"浮点数元素对象b的元素最小值为:"<<Min(b)<<endl;
return 0;
}
你需要实例化模板函数friend t Max<>(CValue <t> &a)
c
#include<iostream> using namespace std; template <typename T> class CValue; template <typename T> T Max(CValue<T> &a) { T x = a.data[0]; for(int i = 1; i < 5; i++) if(x < a.data[i]) x = a.data[i]; return x; } template <typename T> T Min(CValue<T> &a) { T min = a.data[0]; for(int i = 1; i < 5; i++) if(min > a.data[i]) min = a.data[i]; return min; } template <typename T> class CValue { T data[5]; public: CValue() { cout << "please input 5 numbers" << endl; for(int i = 0; i < 5; i++) cin>>data[i]; } friend T Max<>(CValue<T> &a); friend T Min<>(CValue<T> &a); }; int main() { cout << "整数对象a,"; CValue<int> a; cout << "浮点数对象b,"; CValue<float> b; cout << "整数元素对象a的元素最大值为:" << Max(a) << endl; cout << "整数元素对象a的元素最小值为:" << Min(a) << endl; cout << "浮点数元素对象b的元素最大值为:" << Max(b) << endl; cout << "浮点数元素对象b的元素最小值为:" << Min(b) << endl; }