У меня есть задание на создание Circuit Sim, и у меня возникают проблемы с классом NotGate, когда я пытаюсь его использовать.
Components - абстрактный класс.
class Component
{
public:
virtual bool getOutput() = 0;
virtual void prettyPrint(string padding) = 0;
virtual void linearPrint() = 0;
};
ТогдаУ меня есть Pin и NotGate, они наследуют через зависимость компонентов.
class Pin {
private:
bool value;
string label;
public:
Pin::Pin(string theLabel) {
label = theLabel;
}
bool Pin::getOutput() {
return value;
}
void Pin::setValue(bool newVal) {
this->value = newVal;
}
};
class NotGate {
private:
shared_ptr<Component> input;
public:
NotGate::NotGate() {
input = make_shared<Component>();
}
bool NotGate::getOutput() {
if (input == 0) {
return true;
} else {
return false;
}
}
void NotGate::setInput(shared_ptr<Component> in) {
this->input = in;
}
};
Я создал Pin "c" и notGate "n1", я хочу иметь "c" в качестве ввода для "n1",Когда я пытаюсь сделать это с помощью команды:
n1->setInput(c);
Это говорит мне, что: No viable conversion from 'shared_ptr<Pin>' to 'shared_ptr<Component>s'
Я пытался создать новый shated_ptr Компонентов и кучу разных вещей, которые не 'т работа.