关于类模板的一个问题
c吧
全部回复
仅看楼主
level 1
老哈吉米
楼主
在模板类a中的成员类m
类m只有一个构造函数
在这个a中有个函数fun
fun(m& m1)
{}
但是编译器报错无法将a<>::m转化成a<>::m&类型
加入了m的拷贝构造函数
可是类型的引用不是只需要构造函数就行了吗??
2023年04月01日 15点04分
1
level 1
老哈吉米
楼主
为什么不识别函数形参中m的引用呢?而将m&当成新类型
2023年04月01日 15点04分
2
level 1
可爱小焚天
我忘了
2023年04月01日 16点04分
3
level 1
可爱小焚天
你好像得是fun(a<>::m&m1)
2023年04月01日 16点04分
4
level 1
可爱小焚天
好像得实例化才行
2023年04月01日 16点04分
5
level 6
Waaaaf
先把完整代码和错误信息贴出来再谈问题
2023年04月01日 16点04分
6
老哈吉米
发了,看一下呗
2023年04月02日 02点04分
level 1
老哈吉米
楼主
2023年04月02日 02点04分
8
Waaaaf
ConstIterator怎么定义的
2023年04月02日 03点04分
老哈吉米
@Waaaaf
只是个父类,都在一个模板内
2023年04月02日 03点04分
老哈吉米
@Waaaaf
按理说这就是传入一个类的引用,不需要拷贝构造函数。是不是涉及到语义解析的问题
2023年04月02日 03点04分
Waaaaf
@老哈吉米
Erase里调用Erase只传了一个参数;后缀++应当返回的是一个临时对象,而临时对象不能用左值引用接收,考虑先将其赋给一个变量或使用前缀++。
2023年04月02日 03点04分
level 1
老哈吉米
楼主
2023年04月02日 03点04分
9
level 1
老哈吉米
楼主
2023年04月02日 03点04分
10
level 3
贴吧用户_zero
其实是个引用右值问题,比如下面的代码
int get_int(){return 0}
void use_int(int & n){}
int main(){
use_int(get_int()) // 编译报错
return 0
}
加const或者改成复制
void use_int(const int & n){}
void use_int(int n){}
2023年04月02日 08点04分
13
level 1
老哈吉米
楼主
感觉可能是左右值问题
2023年04月02日 08点04分
14
1