构建器有问题。 我有两个类(MyClass1,MyClass2)。
MyClass1.h
class MyClass1 {
public:
MyClass1();
...
private:
MyClass2 object;
...
}
MyClass1.cpp
#include "MyClass1.h"
MyClass1::MyClass1() { //This constructor causes the error!!!
object = MyClass2(1000);
...
}
...
MyClass2.h
class MyClass2 {
public:
MyClass2(int);
...
private:
int id;
...
}
MyClass2.cpp
#include "MyClass2.h"
MyClass2::MyClass2(int id) {
this->id = id;
...
}
...
创建' MyClass1'的实例时我收到此错误消息:
error C2512: 'MyClass2': no appropriate default constructor available
答案 0 :(得分:3)
您需要在构造函数体内分配 object
之前,object
需要默认构造,但是{{1没有默认的构造函数。
您应该使用member initializer list来指定应该使用哪个构造函数来初始化MyClass2
。
在构成构造函数体的复合语句开始执行之前,完成所有直接碱基,虚拟碱基和非静态数据成员的初始化。成员初始化列表是可以指定这些对象的非默认初始化的地方。
e.g。
object
答案 1 :(得分:0)
错误是当进入构造函数的主体时,应该构造并初始化每个成员。因为tehre没有ctor,没有可用于listing=[12,34,5,33,89,3]
for i in range(0,len(listing)-1):
for j in range(0,len(listing)-i-1):
if listing[j]>listing[j+1]:
temp=listing[j]
listing[j]=listing[j+1]
listing[j+1]=temp
print(listing)
编译器抱怨的参数。
初始化成员对象的语法是:
MyClass2