Вход на сайт
C++.Аргумент шаблона функции по умолчанию.
88
12.02.06 14:14
Написал для проверки код(по Страуструпу)
Получаю вот такую ошибку.
Но этого не может быть!
Вот код.
Попробуйте скомпилировать
или может кто так обьяснит в чём проблема.
Получаю вот такую ошибку.
В ответ на:
error: default template arguments may not be used in function templates
error: default template arguments may not be used in function templates
Но этого не может быть!
Вот код.
В ответ на:
#include <iostream>
#include <vector>
class Record{
public:
Record():count(0),price(0){}
Record(uint c,uint p):count(c),price(p){}
void setPrice(uint p){price=p;}
void setCount(uint c){count=c;}
uint getPrice()const{return price;}
uint getCount()const{return count;}
private:
uint price,count;
};
std::ostream& operator << (std::ostream& os,Record& rec)
{
os<<"Count="<<rec.getCount()<<'\t'<<
"Price="<<rec.getPrice()<<'\n';
return os;
}
class priceCmp{
public:
static bool eq(Record& r1,Record& r2){return r1.getPrice()==r2.getPrice(,0);}
static bool lt(Record& r1,Record& r2){return r1.getPrice()<r2.getPrice(,0);}
};
class countCmp{
public:
static bool eq(Record& r1,Record& r2){return r1.getCount()==r2.getCount(,0);}
static bool lt(Record& r1,Record& r2){return r1.getCount()<r2.getCount(,0);}
};
template< typename T,typename C=priceCmp >
void sort(std::vector<T>& vec)
{
}
int main()
{
Record r(10,20,0);
std::cout<<r;
return 0;
}
#include <iostream>
#include <vector>
class Record{
public:
Record():count(0),price(0){}
Record(uint c,uint p):count(c),price(p){}
void setPrice(uint p){price=p;}
void setCount(uint c){count=c;}
uint getPrice()const{return price;}
uint getCount()const{return count;}
private:
uint price,count;
};
std::ostream& operator << (std::ostream& os,Record& rec)
{
os<<"Count="<<rec.getCount()<<'\t'<<
"Price="<<rec.getPrice()<<'\n';
return os;
}
class priceCmp{
public:
static bool eq(Record& r1,Record& r2){return r1.getPrice()==r2.getPrice(,0);}
static bool lt(Record& r1,Record& r2){return r1.getPrice()<r2.getPrice(,0);}
};
class countCmp{
public:
static bool eq(Record& r1,Record& r2){return r1.getCount()==r2.getCount(,0);}
static bool lt(Record& r1,Record& r2){return r1.getCount()<r2.getCount(,0);}
};
template< typename T,typename C=priceCmp >
void sort(std::vector<T>& vec)
{
}
int main()
{
Record r(10,20,0);
std::cout<<r;
return 0;
}
Попробуйте скомпилировать
или может кто так обьяснит в чём проблема.