Как присвоить значение элементу массива указателей?
От: icwsee  
Дата: 26.06.13 08:08
Оценка: -2
Постарался сформулировать точнее. Вопрос в коде программы, помогите пожалуйста!


#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;
}
указатели массивы
Re: Как присвоить значение элементу массива указателей?
От: Lorenzo_LAMAS  
Дата: 26.06.13 08:18
Оценка:
q — это не массив указателей.

элемент q[2] — это Ir, не Ir *
Of course, the code must be complete enough to compile and link.
Re: Как присвоить значение элементу массива указателей?
От: rg45 СССР  
Дата: 26.06.13 08:18
Оценка:
Здравствуйте, 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>


Указатель можно присвоить элементу массива УКАЗАТЕЛЕЙ, ты же создал массив ОБЪЕКТОВ. Я даже не стану показывать, как создается массив указателей на объекты (хоть это и тривиально) — тебе в самом деле, как это уже советовали в топике рядом, сначала следует разобраться с базовыми концепциями "указатель", "массив" и "ссылка", а также со способами создания и удаления объектов.
--
Справедливость выше закона. А человечность выше справедливости.
Re: Как присвоить значение элементу массива указателей?
От: opener  
Дата: 26.06.13 11:16
Оценка:
Здравствуйте, icwsee, Вы писали:

I>Постарался сформулировать точнее. Вопрос в коде программы, помогите пожалуйста!


I> // следующей строкой я хочу присвоить элементу

I> // массива q под номером 2 указатель на объект w
I> // КАК ЭТО СДЕЛАТЬ?

q[1] = w;

А вообще используй смартпоинтеры и не занимайся ерундой.
Re: Как присвоить значение элементу массива указателей?
От: Nikе Россия  
Дата: 26.06.13 11:24
Оценка: :)
Здравствуйте, 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>
Нужно разобрать угил.
Re[2]: Как присвоить значение элементу массива указателей?
От: Mr.Delphist  
Дата: 26.06.13 16:38
Оценка:
Здравствуйте, opener, Вы писали:

O>А вообще используй смартпоинтеры и не занимайся ерундой.


Только std::auto_ptr не бери Иначе он как червяк, по цепочке будет передавать объект, а предыдущие его указатели — занулять.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.