Постарался сформулировать точнее. Вопрос в коде программы, помогите пожалуйста!
#include "stdafx.h"
#include <iostream>
class Ir
{
public:
int value;
Ir()
{
value = 0;
}
void Pr()
{
std::cout << value << "\n";
}
};
int main()
{
Ir * q = new Ir[10];
// цикл выводит 10 нулей на экран
for(int i = 0; i < 10; i++)
{
(&q[i])->Pr();
}
// создаю новый динамический объект w класса Ir
Ir * w = new Ir(2000);
// следующей строкой я хочу присвоить элементу
// массива q под номером 2 указатель на объект w
// КАК ЭТО СДЕЛАТЬ?
std::getchar();
return 0;
}
q — это не массив указателей.
элемент q[2] — это Ir, не Ir *
Здравствуйте, icwsee, Вы писали:
I>Постарался сформулировать точнее. Вопрос в коде программы, помогите пожалуйста!
I>I> // . . .
I> Ir * q = new Ir[10];
I> // создаю новый динамический объект w класса Ir
I> Ir * w = new Ir(2000);
I> // следующей строкой я хочу присвоить элементу
I> // массива q под номером 2 указатель на объект w
I> // КАК ЭТО СДЕЛАТЬ?
I> // . . .
I>
Указатель можно присвоить элементу массива УКАЗАТЕЛЕЙ, ты же создал массив ОБЪЕКТОВ. Я даже не стану показывать, как создается массив указателей на объекты (хоть это и тривиально) — тебе в самом деле, как это уже советовали в топике рядом, сначала следует разобраться с базовыми концепциями "указатель", "массив" и "ссылка", а также со способами создания и удаления объектов.
Здравствуйте, icwsee, Вы писали:
I>Постарался сформулировать точнее. Вопрос в коде программы, помогите пожалуйста!
I>I>#include "stdafx.h"
I>#include <iostream>
I>class Ir
I>{
I>public:
I> int value;
std::vector<Ir> q;
I> Ir() : value(0) {}
I> explicit Ir(int value) : value(value) {}
I> void Pr()
I> {
I> std::cout << value << "\n";
I> }
I>};
I>int main()
I>{
I> std::vector<Ir> q( 10 );
I> // цикл выводит 10 нулей на экран
I> for(size_t i = 0; i != q.size(); i++)
I> {
I> q[i].Pr();
I> }
I> // создаю новый динамический объект w класса Ir
I> std::vector<Ir> w;
w.push_back( Ir(2000) );
I> // следующей строкой я хочу присвоить элементу
I> // массива q под номером 2 указатель на объект w
I> // КАК ЭТО СДЕЛАТЬ?
q[2].q.swap( w );
I> std::getchar();
I> return 0;
I>}
I>
Здравствуйте, opener, Вы писали:
O>А вообще используй смартпоинтеры и не занимайся ерундой.
Только std::auto_ptr не бери

Иначе он как червяк, по цепочке будет передавать объект, а предыдущие его указатели — занулять.