Замена auto_ptr в VC ++ 8

var select = document.getElementById("selectSubject");
var opt = 'youreemailvalue';
var el = document.createElement("option");
el.textContent = opt;
el.value = opt;
select.appendChild(el);

function SetSelectedValue() {
var e = document.getElementById("selectSubject");
 var selected_value = e.options[e.selectedIndex].value;
 document.getElementById('uploadFile').value = selected_value;
 alert('value set to uploadfile')
}


 

Следующий код работает для меня

var e = document.getElementById("selectSubject");
var selected_value= e.options[e.selectedIndex].value;

selected_value get значение, которое выбирает пользователь

Рабочий пример Jsfiddle Здесь https://jsfiddle.net/0yfdc51g/

9
задан Community 23 May 2017 в 02:08
поделиться

7 ответов

Переместитесь для повышения интеллектуальных указателей.

Тем временем можно хотеть извлечь работу auto_ptr реализация от старого / другой STL, таким образом, у Вас есть рабочий код.

Я полагаю, что auto_ptr семантика существенно повреждается - она сохраняет ввод, но интерфейс на самом деле не более прост: все еще необходимо отследить, какой экземпляр является текущим владельцем, и удостоверьтесь листы владельца в последний раз.

уникальные-ptr "меры", что, заставляя выпуск не только бросить владение, но также и установку в NULL RHS. Это - самая близкая замена для auto-ptr, но с его другой семантикой это не общедоступная замена.

Существует вводная статья для повышения интеллектуальных указателей, гм, меня.

7
ответ дан 2 November 2019 в 23:11
поделиться

Вы рассмотрели использование STLPort?

3
ответ дан 2 November 2019 в 23:11
поделиться

Используйте unique_ptr. Я думаю, что они были представлены, чтобы быть лучшим auto_ptr.

http://www.boost.org/doc/libs/1_35_0/doc/html/interprocess/interprocess_smart_ptr.html#interprocess.interprocess_smart_ptr.unique_ptr

На самом деле я ведусь полагать, что auto_ptr может быть удержан от использования в пользу него:

http://objectmix.com/c/113487-std-auto_ptr-deprecated.html

2
ответ дан 2 November 2019 в 23:11
поделиться

Почему делают Вы думаете станд.:: auto_ptr <> повреждается.

Я имел бы, хотя это что-то настолько плохо, как об этом сообщат стандартам comitte!

Сделайте Вы подразумеваете, что Вы должны:

std::auto_ptr<T>   x(new T);  // Use the explicit constructor.
1
ответ дан 2 November 2019 в 23:11
поделиться

Повышение использования:: shared_ptr/boost:: scoped_ptr. Это будет предпочтительный интеллектуальный указатель в предстоящих стандартах C++ (уже находится в TR1).

Править: Найдите связанное обсуждение здесь: Идиоматическое использование станд.:: auto_ptr или только используют shared_ptr?

0
ответ дан 2 November 2019 в 23:11
поделиться

Насколько я помню, не так ли:

auto_ptr<T> x = auto_ptr<T>(new T()); ??
0
ответ дан 2 November 2019 в 23:11
поделиться

Не ответ, но для общего интереса всех, для кого эти ошибки актуальны. Есть еще одна связанная ошибка с auto_ptr VC8, которая связана с неявным повышением качества. Это, вероятно, самое зло из всех, потому что другие ошибки просто позволяют без сбоев компилировать код, который в противном случае является незаконным в соответствии со стандартом, но, по крайней мере, совместимый код работает нормально. Из-за этой ошибки код, который действительно соответствует требованиям, не работает должным образом.

Проблема заключается в следующем. Стандарт определяет конструкторы auto_ptr и операторы преобразования таким образом, что они поддерживают неявное преобразование с повышением частоты auto_ptr , как и обычные указатели. Однако, Реализация этого VC8 выполняет reinterpret_cast , а не static_cast . Естественно, это не только UB буквой стандарта, но и разрыв с несколькими базовыми классами и / или виртуальным наследованием. Вот пример нарушенного этим юридического кода:

struct Base1 { int x; };
struct Base2 { int y; };
struct Derived : Base1, Base2 {};

std::auto_ptr<Derived> createDerived()
{
  return std::auto_ptr<Derived>(new Derived);
}

std::auto_ptr<Base2> base2(createDerived());

На одной из моих прошлых работ, когда мы столкнулись с этой проблемой в производстве, мы просто сами исправили заголовки (это тривиальное исправление из двух строк).

0
ответ дан 2 November 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: