Реализовать конструктор копирования с помощью шаблона моста Переполнение стека

Я изучаю 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;
}

А теперь я создаю интерфейс, который использует эту реализацию, где imps — мой указатель на класс реализации:

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

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

Первый конструктор работает нормально, но второй, это конструктор копирования, показывает
нет соответствующей функции для вызова ‘SystemImpl :: SystemImpl (const System&)»

В чем дело?

1

Решение

За imps = new SystemImpl(sys);Компилятор жалуется, что SystemImpl не имеет конструктор, принимающий System как его параметр.

Вы могли бы хотеть

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector