Это мой класс:Почему конструктор вызывается после статического литья?
class AComponent : public nts::IComponent
{
public:
AComponent(const size_t &maxInputs, const size_t &maxOutputs, const size_t &value);
AComponent(nts::AComponent &);
virtual ~AComponent();
virtual nts::Tristate Compute(size_t pin_num_this = 1);
virtual void SetLink(size_t pin_num_this,
nts::IComponent &component,
size_t pin_num_target);
void setComponent(const size_t &components, nts::Tristate &state);
virtual void Dump(void) const;
nts::Tristate &getComponent(const size_t &pin);
protected:
std::vector <nts::Tristate *> _components;
size_t _maxInputs;
size_t _maxOutputs;
};
И когда я пытаюсь вызвать эту строку:
this->_components[pin_num_this] =
&static_cast<nts::AComponent>(component).getComponent(pin_num_target);
У меня есть эта компиляция ошибок, что случается:
sources/AComponant.cpp:33:76: error: no matching function for call to ‘nts::AComponent::AComponent(nts::IComponent&)’
this->_components[pin_num_this] = &static_cast<nts::AComponent>(component).getComponent(pin_num_target);
И если я реализовать конструктор, он идет здесь. Проблема в том, что я не хочу манипулировать IComponent
, я хочу манипулировать AComponent
. У вас есть идея, почему это происходит?
Edit:
this->_components
вектор. Он объявлен в конструкторе следующим образом:
this->_components.reserve(maxInputs + maxOutputs + 2);
что тип 'component'? –
Пожалуйста, покажите нам, как объявляется 'component'. –