Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用桥接模式c+实现复制构造函数+; 我正在研究C++,并尝试实现桥接模式,当发生这种情况时,我的构造函数实现文件: SystemImpl::SystemImpl() { this->name = ""; this->value = 0.0; this->maxValue = DBL_MAX; } SystemImpl::SystemImpl(const SystemImpl& sys) { this->name = sys.name; this->value = sys.value; this->maxValue = sys.maxValue; }_C++_Design Patterns_Constructor_Bridge - Fatal编程技术网

使用桥接模式c+实现复制构造函数+; 我正在研究C++,并尝试实现桥接模式,当发生这种情况时,我的构造函数实现文件: SystemImpl::SystemImpl() { this->name = ""; this->value = 0.0; this->maxValue = DBL_MAX; } SystemImpl::SystemImpl(const SystemImpl& sys) { this->name = sys.name; this->value = sys.value; this->maxValue = sys.maxValue; }

使用桥接模式c+实现复制构造函数+; 我正在研究C++,并尝试实现桥接模式,当发生这种情况时,我的构造函数实现文件: SystemImpl::SystemImpl() { this->name = ""; this->value = 0.0; this->maxValue = DBL_MAX; } SystemImpl::SystemImpl(const SystemImpl& sys) { this->name = sys.name; this->value = sys.value; this->maxValue = sys.maxValue; },c++,design-patterns,constructor,bridge,C++,Design Patterns,Constructor,Bridge,现在,我正在创建使用此实现的接口,其中imps是指向实现类的指针: System::System() { imps = new SystemImpl(); } System::System(const System& sys) { imps = new SystemImpl(sys); } 第一个构造函数工作正常,但第二个是复制构造函数,显示 调用'SystemImpl::SystemImpl(const System&')时没有匹配的函数。 怎么了?对于imps=n

现在,我正在创建使用此实现的接口,其中imps是指向实现类的指针:

System::System() {
    imps = new SystemImpl();
}

System::System(const System& sys) {
    imps = new SystemImpl(sys);
}
第一个构造函数工作正常,但第二个是复制构造函数,显示 调用'SystemImpl::SystemImpl(const System&')时没有匹配的函数。


怎么了?

对于
imps=newsystemimpl(sys),编译器抱怨
SystemImpl
没有将
System
作为其参数的构造函数

你可能想要

System::System(const System& sys) {
    imps = new SystemImpl(*sys.imps);
}

SystemImpl是系统的实现,我使用接口中的实现,而不是相反,我猜这似乎是“只是读取错误消息”的情况。。。