- 主题:Qt 特有,还是 c++ ?
class B里面因为定义了一个类型为A的成员变量, 比如m_a;
在B的构造函数调用之时,需要对这个成员变量m_a初始化,然后才是赋值例如这个:
B(A a){
this->m_a = a; //这步赋值之前, m_a需要初始化。初始化就会出问题~
}
【 在 zhanghaoX 的大作中提到: 】
: 在Debian9下出现的问题。
:
: 两个自定义的类 class A , class B
: ...................
--
FROM 117.188.30.*
构造函数如果是单参数的非拷贝构造函数,似乎可以加上关键词explicit
【 在 javaboy 的大作中提到: 】
: 这是c++的问题。
:
: 看上去QVector存取对象的时候需要拷贝构造。类没有拷贝构造的时候就会报这个错。
: ....................
- 来自「最水木 for iPhone X」
--
FROM 117.173.111.*
【 在 javaboy 的大作中提到: 】
: 这是c++的问题。
: 看上去QVector存取对象的时候需要拷贝构造。类没有拷贝构造的时候就会报这个错。
: 另外,如果你没有提供默那个x(int)的构造函数,这个class x就是POD。C++编译器会自动生成一个拷贝构造函数,也不会报错。
: ...................
等一下,你确定是这样? C++的一个类是否会由编译器自动生成拷贝构造的条件不是你说的这样吧? 即使有提供X(int),也应该会自动生成一个拷贝构造函数。
按照目前的标准,只有类自己写了拷贝构造或者移动构造,或者主动把拷贝构造delete了,编译器才不会自动生成,其余的编译器都会自动给生成一个拷贝构造吧?
--
FROM 1.91.32.*
这个 m_a 是 暗含的?
【 在 icingup 的大作中提到: 】
: class B里面因为定义了一个类型为A的成员变量, 比如m_a;
: 在B的构造函数调用之时,需要对这个成员变量m_a初始化,然后才是赋值例如这个:
:
: ...................
--
FROM 221.218.141.*
试了, 应该Qt特有。
代码 用std vector 没问题,
写了个无参数的空构造函数,Qt也没问题了,
Qt看来在 Win和linux的 实现不一样。
【 在 javaboy (喝了咖啡就话多-_-;) 的大作中提到: 】
: 这是c++的问题。
: 看上去QVector存取对象的时候需要拷贝构造。类没有拷贝构造的时候就会报这个错。
: 另外,如果你没有提供默那个x(int)的构造函数,这个class x就是POD。C++编译器会自动生成一个拷贝构造函数,也不会报错。
--
FROM 221.218.139.*
直接往vector里面塞对象而非引用或者指针,这用法本身就有问题吧?
【 在 zhanghaoX (环顾四方有效) 的大作中提到: 】
: 在Debian9下出现的问题。
: 两个自定义的类 class A , class B
: 其中, class B 的构造函数的参数 为 class A对象,
: ...................
--
FROM 111.29.129.*