关于类模板的一个问题
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
先把完整代码和错误信息贴出来再谈问题
2023年04月01日 16点04分 6
发了,看一下呗
2023年04月02日 02点04分
level 1
老哈吉米 楼主
2023年04月02日 02点04分 8
ConstIterator怎么定义的
2023年04月02日 03点04分
@Waaaaf 只是个父类,都在一个模板内
2023年04月02日 03点04分
@Waaaaf 按理说这就是传入一个类的引用,不需要拷贝构造函数。是不是涉及到语义解析的问题
2023年04月02日 03点04分
@老哈吉米 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
其实是个引用右值问题,比如下面的代码
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