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

Возвращение массива в качестве результата выполнения метода класса (Kubuntu, netBeans, g++) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ задача с функциями http://www.cyberforum.ru/cpp-beginners/thread1308421.html
Помогите пожалуйста написать код, никак не могу понять, что нужно делать: При выводе текстов на экран или печатающее устройство часто используются табуляционные остановки - выделенные позиции строки. Например, при печати таблиц полезно зафиксировать положение столбцов таблиц. Если в исходном тексте встречается символ табуляции tab (например, символ с кодом 9), это означает, что текст, следующий...
C++ Инициализация char в конструкторе class Abit { public: Abit(); ~Abit(); protected: private: bool medal; http://www.cyberforum.ru/cpp-beginners/thread1308393.html
Найти максимум и произведение элементов массива через функции C++
#include <iostream> using namespace std; int vvod_dannih() { setlocale(0,""); int i,n,mas; cout<<"Введите количество элементов массива :"; cin>>n; for (i = 0; i < n ; i++)
Как найти самое длинное (короткое) слово? C++
как найти самое длинное(самое короткое) слово? #include <iostream> #include <sstream> #include <string> #include <algorithm> #include <assert.h> int main()
C++ Компиляция AdvanceComp http://www.cyberforum.ru/cpp-beginners/thread1308361.html
добрый день! Подскажите, пожалуйста, как можно компилировать AdvanceCOMP, но с минимальным размером? Я компилирую через Mingw
C++ Рекурсивная последовательность Помогите пожалуйста, не понимаю суть задания. Если несложно, покажите пример. Доказать, что рекурсивная последовательность имеет предел при . Определить глубину рекурсии при подсчете. подробнее

Показать сообщение отдельно
Kapitan79
3 / 3 / 0
Регистрация: 13.10.2013
Сообщений: 148
23.11.2014, 17:25     Возвращение массива в качестве результата выполнения метода класса (Kubuntu, netBeans, g++)
Всем привет.

Пытаюсь написать свой первый демон на C++ по образу и подобию сделанного на PHP.

Столкнулся со следующей проблемой.

В PHP у меня был универсальный класс, методы которого принимали массивы параметров запроса к mysql (поля, таблицы и т.д.), после чего выполняли операции над базой данных по этим параметрам.

Пытаюсь сейчас воспроизвести это в с++.

Вроде всё уже осилил, но осталась одна проблема - мне никак не удаётся передать обратно в функцию main получившийся после select массив.

На различных форумах вообще советуют не передавать массивы между функциями.
Посоветуйте с какой стороны лучше подойти и как реализовать данную задачу.

Сейчас код следующий

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/* 
 * File:   query_class.h
 * Author: fedoseev
 *
 * Created on 22 Ноябрь 2014 г., 18:11
 */
 
#ifndef QUERY_CLASS_H
#define QUERY_CLASS_H
 
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
 
#include <mysql/mysql_connection.h>
 
#include <mysql/cppconn/driver.h>
#include <mysql/cppconn/exception.h>
#include <mysql/cppconn/resultset.h>
#include <mysql/cppconn/statement.h>
#include <string>
 
using namespace std;
 
class query_class {
public:
    query_class();
    int i;
    int j;
    typedef string arr_string[1000][1000]; 
    arr_string     select()                    ;
    int     num_arr_dict                ;
    int     num_arr_field               ;
    string *addr_arr_dict = new string[num_arr_dict];
    string *addr_arr_field = new string[num_arr_field];    
 
private:
    
 
    
};
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/* 
 * File:   query_class.cpp
 * Author: fedoseev
 * 
 * Created on 22 Ноябрь 2014 г., 18:11
 */
 
#include "query_class.h"
 
using namespace std;
 
query_class::query_class() 
{
    
}
 
query_class::arr_string query_class::select()
{    
 
    sql::Driver     *driver ;
    sql::Connection *con    ;
    sql::Statement  *stmt   ;
    sql::ResultSet  *res    ;
    query_class     q       ;
    string          field = ""  ;
    string          dict  = ""  ;
    string          select= "select";
    string          from  = "from";
    string          query = ""  ;      
    /* Создание соединения */
    driver = get_driver_instance();
    con = driver->connect("tcp://192.168.0.98:3306", "developer", "yfc#O7tt");
    
    /* Подключение к базе данных mysql */
    con->setSchema("scada");
    
    /* Создание строки со списком полей для запроса */
    int num_field = sizeof(q.addr_arr_field)/sizeof(string);
    for (int i=0; i<(num_field); i++)
    {
        if (field == "") {field = q.addr_arr_field[i];}
        if (field != "") {field += q.addr_arr_field[i];}
        
        
    }
    
        for (int i=0; i<sizeof(q.addr_arr_dict); i++)
    {
        if (dict == "") {dict = q.addr_arr_dict[i];}
        if (dict != "") {dict += q.addr_arr_dict[i];}
    }
    
    query = select + field + from + dict;
    stmt = con->createStatement();
    res = stmt->executeQuery(query);
    int num_res = (sizeof res)/sizeof(string);//получение длины массива делением длины массива в байтах на размер памяти, выделяемой для переменной данного типа
    string addr_arr_result[num_field][num_res] ; 
    int j = 0;
    while (res->next())
    {
        for (int i=0; i<num_field; i++)
            {
              addr_arr_result[j][i] = res->getInt(q.addr_arr_field[i]);
              j++;
            }
    }
 
    delete res;
    delete stmt;
    delete con;
 
 
return addr_arr_result;
}
Добавлено через 2 часа 54 минуты
Возможно я не отразил суть вопроса.

Массив, который необходимо возвратить формируется внутри метода.
В зависимости от результатов запроса его размер разный, а значит определить тип возвращаемого значения функции трудно. Не знаю как к этому подступиться.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru