C++ 模板类中没有匹配的函数
当我尝试在我的mingw32编译器上编译此代码时,没有得到匹配的成员函数错误C++ 模板类中没有匹配的函数,c++,templates,member-functions,copy-initialization,C++,Templates,Member Functions,Copy Initialization,当我尝试在我的mingw32编译器上编译此代码时,没有得到匹配的成员函数错误 #include <iostream> using std::cout; template <class T> class Pattern { public: Pattern(): element(){ cout<< "default c-tor"; } Pattern(Pattern ©): element(co
#include <iostream>
using std::cout;
template <class T>
class Pattern
{
public:
Pattern(): element(){
cout<< "default c-tor";
}
Pattern(Pattern ©): element(copy.element){
cout<< "copy c-tor";
}
Pattern& operator=(Pattern &assgn)
{
cout<<" assignment operator";
element = assgn.element;
return *this;
}
~Pattern(){
cout<<"destructor";
}
private:
T element;
};
template <class T>
Pattern<T> creator()
{
cout<< "Testing creator";
Pattern<T> pat;
return pat;
}
int main()
{
Pattern<double> pt1(creator<double>());
Pattern<double> pt2 = creator<double>();
}
#包括
使用std::cout;
模板
阶级模式
{
公众:
模式():元素(){
cout您的复制c-tor
和赋值运算符[属于模式
类]将参数作为非常量
参考
creator()
ISO C++03[8.5.3/5
]
否则,应参考非易失性常数类型(即,cv1应为常数)。
[示例:
double&rd2=2.0;//错误:不是左值,引用不是常量
尝试将参数(复制c-tor和赋值运算符)作为const
参考传递。更改如下:
Pattern(Pattern const ©): element(copy.element){
R值(如创建者函数实例化返回的值)只能绑定到C++03中的“引用常量”
顺便说一句,我觉得您希望main中的第二行调用赋值运算符。这是不正确的。尽管这个语句看起来很像,但它调用了copy构造函数来创建pt2
编辑2:
$8.5/14-“初始化
在表单中发生
tx=a
以及
在参数传递中,函数返回,
抛出异常(15.1),处理
例外情况(15.3)和合计
成员初始化(8.5.1)为
称为复制初始化。“
请正确格式化,使用代码文本上的01010按钮。