Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ArrayList в Visual C++

68K
07 марта 2011 года
RefRegerator
3 / / 07.03.2011
Есть System::Collections::ArrayList. В него я добавляю собственноручно созданные объекты. Но значения полей не добавляются! Почему помогите плз((
[SIZE="3"][SIZE="2"]
 
Код:
String^ BasicTypes::DimNewVariable(System::String ^RegionName)
{
    Random^ Rnd = gcnew Random();
    String^ rndType = TypeName->GetValue(Rnd->Next(12))->ToString();  //Тут получаем случайный тип (массив из 12 строк)
    String^ rndName = GetRandomChar()->ToLower(); //Получаем имя переменной
    while (GetTypeByName(rndName) != "NULL") //вот тут делаем её уникальной
        rndName += GetRandomChar()->ToLower();
    AddVariable(rndName, rndType, RegionName); //Регистрируем переменную
    return "Dim " + rndName + " As " + rndType + "\n";
}


А вот собственно в чем проблема:
 
Код:
void BasicTypes::AddVariable(System::String ^name, System::String ^type, System::String ^region)
{
    Variables->Add(gcnew BVT(name, type, region)); //Variables вектор
//BVT мой ref класс, в нем 3 поля типа System::String
}
[/SIZE][/SIZE]
Итак, в "Variables" объекты есть, но значения полей у них <неопределенное значение>. Я пробовал делать String::Copy, String::Clone ничего не помогло (или руки кривые)!
278
07 марта 2011 года
Alexander92
1.1K / / 04.08.2008
А у BVT есть конструктор копирования?
68K
07 марта 2011 года
RefRegerator
3 / / 07.03.2011
Цитата: Alexander92
А у BVT есть конструктор копирования?



Хм) нет не было, дописал следующее:

 
Код:
BVT::BVT(BVT ^ copy)
{
    this->Name = String::Copy(copy->GetName());
    this->Region = String::Copy(copy->GetRegion());
    this->Type = String::Copy(copy->GetType());
    this->Value = String::Copy(copy->GetValue());
}

Думаю это можно назвать конструктором копирования??.. Дело в том, что вызывается обычный конструктор с параметрами... поля инициализируются, но в ArrayList они имеют неопределенное значение... Пробовал то же намутить на C# и там всё это вроде пашет. Но мне надо на С++, не хотелось бы сдаваться)
278
07 марта 2011 года
Alexander92
1.1K / / 04.08.2008
После того, как дописали, - ничего не поменялось? Просто при добавлении в List вызывается именно конструктор копирования (вспомните даже обычный STL, list :: push_back() и т.п.
68K
07 марта 2011 года
RefRegerator
3 / / 07.03.2011
Я нашел в чем проблема! Спасибо за участие, Alexander92! Окаянный я человек, изучал ООП по джаве) и проблема вышла именно в банальном незнании ооп с++

Код:
BVT::BVT(String^ varName, String^ varType, String^ varSub, String^ varValue)
{
    Name = varName;
    Type = varType;
    Region = varSub;
    Value = varValue;
}

BVT::BVT(String^ varName, String^ varType, String^ varSub)
{
    BVT(varName, varType, varSub, "NULL");
}

Т.е. вызывался один конструктор вызывался из другого.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог