Форум программистов, компьютерный форум CyberForum.ru

Созданный объект Array<char> удаляется, как только метод convert завершается - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Объяснить строку объявления массива http://www.cyberforum.ru/cpp-beginners/thread1237008.html
Ньюанс int* array = new int; на С/C++ Пришлость мне недавно C# код в почти голый C(C++) переписывать. Как-то прощелкал и след. выражение C#: int TransposeMatrix = new int; автоматом "перевел" так (неправильно): int *TransposeMatrix = int TType; :-|
C++ Ошибка в curlpp по ходу выполнения программы LibcurlRuntimeError at memory location 0x02B3F7D8 Есть код: curlpp::Cleanup cleaner; curlpp::Easy request; std::list<std::string> headers; headers.push_back("Content-Type: text/*"); sprintf(buf, "Content-Length: %d", size); using namespace curlpp::Options; request.setOpt(new Verbose(true)); request.setOpt(new ReadFunction(curlpp::types::ReadFunctionFunctor(readData))); http://www.cyberforum.ru/cpp-beginners/thread1236986.html
Curl не работает в оконном приложении winapi C++
Вообщм проблема, в консольном приложении курл работает нормально, в оконном нет, функция curl_easy_perform() возвращает ошибку 23, хз вообще что предпринять, Вот код, если коме не лень глянуть но нет под рукой библиотек курла то скажите, скинцу весь проект строки 148 - 160, с курлом #include <Windows.h> #include <tchar.h> #include "Header.h" #include "curl.h"
C++ Идентификаторы: createHanningWindow и phaseCorrelate не найдены
Пытался скомпилировать демку #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" using namespace cv;
C++ Проверить какая клавиша/клавиши нажаты в текущем приложении (консольном) http://www.cyberforum.ru/cpp-beginners/thread1236974.html
Есть игра в консольном приложении, на двоих(на WinAPI). Управление: у первого игрока w, a, s, d; у второго на стрелках. Как проверять какие клавиши нажаты? Нужно чтобы для каждого игрока действия выполнялись одинаково вовремя. Что-то вроде этого: while (true) { switch (Нажатая_клавиша) { case W: player1.up(); ... case UP: player2.up(); ...
C++ Дискретная модель. Задача на вычисление времени полета тела В общем вопрос в названии темы. Что такое дискретная модель? Решаю простые задачи на С++ попалась задача на вычисление времени полета тела, но в условии сказано использовать дискретную модель. Можно какие- нибудь примеры. подробнее

Показать сообщение отдельно
QGuest
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
31.07.2014, 23:54     Созданный объект Array<char> удаляется, как только метод convert завершается
Есть простенькая оболочка над массивом Array<T>:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
template<typename T>
class Array {
private:
    T* data;
public:
    const unsigned int length;
 
    Array(unsigned int length) : length(length) {
        data = new T[length];
    }
 
    T& operator[](int index) {
        if (index < 0 || index >= length) {
            throw out_of_range("Array index out of range.");
        }
        return data[index];
    }
 
    operator T*() {
        return data;
    }
 
    ~Array() {
        delete[] data;
    }
};
Есть метод:
C++
1
2
3
4
5
6
7
Array<char> convert(const string& data) {
    Array<char> result(data.length());
    for (int i = 0; i < data.length(); i++) {
        result[i] = data[i];
    }
    return result;
}
Непонятное поведение происходит в таком коде:
C++
1
2
3
4
char* arr = convert("string");
for (int i = 0; i < 6; i++) {
    cout << arr[i] << " ";
}
Выяснил, что созданный объект Array<char> удаляется, как только метод convert завершается. Но почему? Он же должен быть передан как возвращаемый результат. Почему же он удаляется?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru