Я пытаюсь скомпилировать следующий код с помощью VS2010:кортежа константных ссылок: не удается преобразовать из междунар на константные <T> &
typedef enum EPinDirection{
EPinDirection_Unknown,
EPinDirection_In,
EPinDirection_Out
};
class cPin{
std::tuple<QString,EPinDirection> m_nameDir;
public:
cPin(){ m_nameDir = std::tuple<QString, EPinDirection>("noNamePin", EPinDirection_Unknown);}
cPin(QString name, EPinDirection dir) { m_nameDir = std::tuple<QString, EPinDirection>(name, dir); }
const std::tuple<QString,EPinDirection>& getNameDir() const {return m_nameDir;};
};
class cConnection{
std::tuple<const cPin&,const cPin&> m_data;
public :
cConnection();
cConnection(const cPin& start, const cPin& stop) {m_data = std::tuple<const cPin&, const cPin&>(start, stop);}
int setData(const cPin& start, const cPin& stop) {m_data = std::tuple<const cPin&, const cPin&>(start, stop);}
const std::tuple<const cPin&,const cPin&> & getData() const {return m_data;}
};
компиляции завершается с сообщением: не удается преобразовать из «межд» до «сопзЬ CP & '. Указанный номер строки находится в объявлении кортежа в cConnection.
Я понятия не имею, почему. Что может быть причиной?
Возможно, отсутствие неявного преобразования из 'int' в' const cPin & '? Ни за что. –
В этой программе больше одной ошибки. Пожалуйста, исправьте все, кроме ошибки, на которую вы хотите сосредоточиться. – dyp
@ набиячлевэлиь На самом деле конверсия, похоже, не является проблемой здесь вообще. OP назначает * const reference * (косвенно), который просто не будет работать. – dyp