gpt4 book ai didi

c++ - 模板类中没有匹配函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:55 26 4
gpt4 key购买 nike

当我尝试在我的 mingw32 编译器上编译这段代码时,我没有得到匹配的成员函数错误

#include <iostream> 
using std::cout;
template <class T>
class Pattern
{
public:
Pattern(): element(){

cout<< "default c-tor";
}

Pattern(Pattern &copy): 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>();
}

有人请告诉我如何解决这个问题。

最佳答案

修改如下:

Pattern(Pattern const &copy): element(copy.element){ 

RValues(例如创建者函数实例化返回的那些)只能绑定(bind)到 C++03 中的“对 const 的引用”。

顺便说一句,有些东西让我觉得您希望 main 中的第二行调用赋值运算符。这是不正确的。这个语句尽管看起来是调用复制构造函数来创建 pt2。

编辑 2:

$8.5/14- "The initialization thatoccurs in the form

T x = a;

as well asin argument passing, function return,throwing an exception (15.1), handlingan exception (15.3), and aggregatemember initialization (8.5.1) iscalled copy-initialization."

关于c++ - 模板类中没有匹配函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3848429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com