Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2013, 22:33   #1
qwertyk
Пользователь
 
Регистрация: 15.07.2009
Сообщений: 52
По умолчанию Создание класса

Код:
..............................................
template <typename T> class CMyArray
{
        public:
                CMyArray(T value);
                ~CMyArray(void){};
                int length(void){return _length+1;};//возвращает длину массива (функция работает)
                T array(int index);//должна возвращать значение массива в соответствии с введенным индексом (функция не работает)

        private:
                T *_array;
                int _length;
};
template <typename T> CMyArray<T>::CMyArray(T value)
{
        T *_array=new T[1];
        _length=0;
        _array[_length]=value;

};

template <typename T> T CMyArray<T>::array(int index)
{
        return _array[index];
};

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        int i=123;
        int x;
        char ch1='t';
        CMyArray <int> arr(i);
        x=arr.array(0);
}
Этот код компилируется, но при работе выдает ошибку. Проверял адрес переменной _array в конструкторе и в ф-и T array(int index), адреса разные. В конструкторе адрес _array выводится верный, а в функции все время один и тот же 4294967294. В чем ошибка?
qwertyk вне форума Ответить с цитированием
Старый 16.01.2013, 22:51   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Код:
template <typename T> CMyArray<T>::CMyArray(T value)
{
        T *_array=new T[1]; // здесь T *_array - локальная переменная, 
         // имеющая такое же имя как и член класса CMyArray::_array
        _length=0;
        _array[_length]=value;

};
EUGY вне форума Ответить с цитированием
Старый 16.01.2013, 22:56   #3
qwertyk
Пользователь
 
Регистрация: 15.07.2009
Сообщений: 52
По умолчанию

EUGY, спасибо, исправил ошибку.
Код:
template <typename T> CMyArray<T>::CMyArray(T value)
{
        _array=new T[1];
        _length=0;
        _array[_length]=value;

};
qwertyk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание класса Puhovoi Помощь студентам 1 24.03.2011 11:09
Создание класса stscolt Общие вопросы .NET 1 27.12.2009 23:14
Создание класса Манжосов Денис :) Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 31.05.2008 11:54
Создание класса Stanislav Общие вопросы Delphi 8 15.05.2008 23:34
создание класса Siren Помощь студентам 1 07.05.2008 19:19