Консультация № 70346
10.01.2007, 20:33
0.00 руб.
0 2 2
Пожалуйста помогите. Щас петеучиваюсь с C++ Builder на Visual C++.Столкнулся с огромной проблемой компилятор не хочет понимать код при програмировании проэкта с исползованием Forms Win32.
Есть структура:
struct Dot
{
int Coordinates[3];
string Name;
vector<int>Lines;
}Template;
//И есть обьект:
vector<Dot>Dots;
Dots.push_back(Template)
/*Происходит глюк с инициацией переменных в Dots.Они не инициируются, хотя при создании консольного приложения с использованием этой структуры все работает нормально.
А почему нельзя в визуал с++ сделать Dots.push_back(), в билдере можно.
Как создать глобальную переменную внутри функции? */
Dots[0].Name = "sfdg";
Dots[0].Coordnates[0] = 0;

Обсуждение

Неизвестный
10.01.2007, 21:04
общий
это ответ
Здравствуйте, Michael Stumbra!
Метод push_back в MSVC++ имеет параметр, ссылку на элемент вектора. Если элемент вектора класс, то он должен перекрывать оператор присваевания элемента этого же класса. В вашем случае код следует писать следущим образом (см приложение)

Приложение:
Dot aDotvector <Dot>Dots;Dot.Name = "sfdg";Dot.Coordnates[0] = 0;Dots.push_black(aDot);
Неизвестный
12.01.2007, 20:44
общий
это ответ
Здравствуйте, Michael Stumbra!
Все о чем ты написал - у меня на VC работает см. приложение.
А глобальная переменная не может быть "создана" внутри функции.
Ее обычно объявляют вне всех функций - в заголовочном файле.
Удачи!


Приложение:
vector <Dot> Dots;Dots.push_back(Template);Dots[0].Name = (string)"sfdg";Dots[0].Coordinates[0] = 0x17;
Форма ответа