如何解决错误:没有适当的默认构造函数可用的问题
我是模板类的新手。我正在将原始类转换为模板化类,但是却收到一条错误消息,指出我没有合适的默认构造函数。如果我没记错的话,默认构造函数应该是没有参数的构造函数。任何朝着正确方向的指导都将受到赞赏。
UPDATE 已删除无参数构造函数,因为它与带有DEFAULT_VALUE变量的构造函数相同
头文件:
#include <iostream>
namespace cs_pairs
{
template <class T>
class OrderedPair
{
public:
//static const int DEFAULT_VALUE = int();
static const int DEFAULT_VALUE;
typedef std::size_t size_type;
typedef T value_type;
OrderedPair(value_type newFirst = DEFAULT_VALUE,value_type newSecond = DEFAULT_VALUE);
void setFirst(value_type newFirst);
void setSecond(value_type newSecond);
value_type getFirst() const;
value_type getSecond() const;
OrderedPair operator+(const OrderedPair& right) const;
bool operator<(const OrderedPair& right) const;
void print() const;
class DuplicateMemberError
{
};
private:
value_type first;
value_type second;
};
//template <class T>
//const int OrderedPair<T>::DEFAULT_VALUE = int();
}
实施文件:
#include "orderedpair.h"
#include <iostream>
using namespace std;
namespace cs_pairs {
template <class T>
OrderedPair<T>::OrderedPair(value_type newFirst,value_type newSecond) {
setFirst(newFirst);
setSecond(newSecond);
}
template <class T>
void OrderedPair<T>::setFirst(value_type newFirst) {
// if statement to throw an exception if precondition not met goes here.
first = newFirst;
}
template <class T>
void OrderedPair<T>::setSecond(value_type newSecond) {
// if statement to throw an exception if precondition not met goes here.
second = newSecond;
}
template <class T>
typename OrderedPair<T>::value_type OrderedPair<T>::getFirst() const {
return first;
}
template <class T>
typename OrderedPair<T>::value_type OrderedPair<T>::getSecond() const {
return second;
}
template <class T>
OrderedPair<T> OrderedPair<T>::operator+(const OrderedPair<T>& right) const {
return OrderedPair(first + right.first,second + right.second);
}
template <class T>
bool OrderedPair<T>::operator<(const OrderedPair<T>& right) const {
return first + second < right.first + right.second;
}
template <class T>
void OrderedPair<T>::print() const {
cout << "(" << first << "," << second << ")";
}
}
我第一次遇到错误的客户端文件部分:
#include <iostream>
#include <ctime>
#include <cstdlib>
#include "orderedpair.h"
using namespace std;
using namespace cs_pairs;
int main() {
int num1,num2;
OrderedPair<int> myList[10];
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。