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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
#1

Как на основе того что лежит в переменной сделать переменную в объекте? - C++

23.08.2014, 20:13. Просмотров 1003. Ответов 27
Метки нет (Все метки)

1. Ну есть у нас переменная
C++
1
2
string arg1 = "MyVar";
string arg2 = "propereties";
и потом можно было обратится через объект
C++
1
cout << object.MyVar; //отобразит propereties
2. Но может такое быть что эти значения лежат еще в одном контейнере, и тогда
C++
1
string container[] = "{name:valera, x:100, y:100}","{name: vova, x:110, y:70}";//это чисто приблизительно
и потом можно было бы получить значения с помощью
C++
1
 cout << object.container[0].name; //вернет valera
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2014, 20:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как на основе того что лежит в переменной сделать переменную в объекте? (C++):

Верно ли, что в основе фабрики лежит наследование классов? - C++
Сори за глупый вопрос, но правильно ли я понял, что в основе фабрики лежит наследование классов?

Нашел в схожей теме не могу понять в чем ошибка. Кроме того как конкретно сделать что были високосные года? - C++
Пользователь вводит две даты (день, месяц, год в виде целых чисел). Необходимо определить и вывести количество дней между этими двумя...

Не изменяется значение переменной в объекте - C++
Переменная health меняет своё значение только внутри функции punch(), при этом её значение в объектах a и b остаётся неизменным. Как...

Можно ли как нибудь явно указать тип переменной, чтобы ИДЕ рассказала мне все что я хочу знать об объекте? - PHP
Можно как нибудь указать тип, но не через оператор new...

Как из переменной окружения сделать обычную переменную? - Bash
В общем, такая ситуация: нужно переменную окружения PATH сделать обычной переменной. Каким образом это можно сделать?

Цифра в текстовой переменной - как сделать цифровую переменную - PHP
Есть ли простое решение? Итак есть текстовая переменная, которая является простым числом (почему не знаю, передаётся через форму в...

27
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
24.08.2014, 16:52  [ТС] #16
У меня vs2008 я же говорил, подключал я эту либу, а она ошибки бьет! И много притом!!!!

Добавлено через 18 секунд
может видео снять, а?
0
0x10
2475 / 1648 / 247
Регистрация: 24.11.2012
Сообщений: 4,070
24.08.2014, 17:02 #17
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ок, там рядом есть каталог vs71. В нем, как я вижу, все собирается.
Делаем одноименные сборки библиотеки и приложения. Либа, как я понимаю, собирается нормально.
Лекарство от всех болезней: в свойствах проекта приложения проверяем, что C\C++ -> Code Generation -> Runtime Library устанолен в Multi-threader (Debug) - т.е. не DLL.
1
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
24.08.2014, 17:13  [ТС] #18
Кликните здесь для просмотра всего текста


Добавлено через 4 минуты
Так, поставил многопоточность вроде собрался! Сейчас кое-чо модифицирую...

Добавлено через 4 минуты
Цитата Сообщение от 0x10 Посмотреть сообщение
Лекарство от всех болезней:
Чувак, ты даже не представляешь насколько ты крут!!! Я б тебя расцеловал!!! Этот еханый
Этот еханый скрипт!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <json/json.h>
#include <string>
#include <iostream>
 
using namespace std;
 
int main(){
    string config_doc = "{\"moon\":\"rex\"}";
    Json::Value root;   // will contains the root value after parsing.
    Json::Reader reader;
    bool parsingSuccessful = reader.parse(config_doc,root);
    if ( !parsingSuccessful )
    {
        // report to the user the failure and their locations in the document.
        std::cout  << "Failed to parse configuration\n"
                   << reader.getFormattedErrorMessages();
        return 0;
    }
    std::string moon = root.get("moon", "no-moon" ).asString();
    cout << "moon: "<< moon <<endl;
    system("pause");
    return 0;
}
ОН ПАРСИТСЯ!!!!
0
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
26.08.2014, 18:02  [ТС] #19
Цитата Сообщение от 0x10 Посмотреть сообщение
Есть конкретные вопросы - задавайте, при условии что ответов на них нет в официальной документации.
Привет дружище! Ты говорил можно задавать конкретные вопросы, у меня конкретный вопрос:
Есть json
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
    "map_w_size":"15",
    "map_h_size":"5",
    "tile":"c:/tile.png",
    "map" : [
            {
                "x":"50",
                "y":"100"
            },
            {
                "x":"1",
                "y":"5"
            }
    ]
}
Как считать то что в []. там только значения в примере читались

Добавлено через 10 минут
Пытаюсь считать хотя б на дисплей, приложение запускается но сразу выводит ошибку.
C++
1
2
3
4
5
    const Json::Value map = root["map"];//считываем объекты
 
        for(int i=0; i < map.size(); ++i){
            cout << map[i].asString() << endl;
        }
0
0x10
2475 / 1648 / 247
Регистрация: 24.11.2012
Сообщений: 4,070
26.08.2014, 18:02 #20
Цитата Сообщение от Валеркуй Посмотреть сообщение
Как считать то что в []
http://jsoncpp.sourceforge.net/class_json_1_1_value.html
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
#include <iostream>
#include <string>
 
#include <jsoncpp/json/json.h>
 
int main() {
    const std::string json_str = R"(
        {
            "map_w_size": 15,
            "map_h_size": 5,
            "tile": "c:/tile.png",
            "map": [
                {
                    "x": 50,
                    "y": 100
                },
                {
                    "x": 1,
                    "y": 5
                }
            ]
        }
    )";
 
    Json::Reader reader;
    Json::Value root;
 
    reader.parse(json_str, root);
 
    for (const auto& point : root["map"]) {
        std::cout << point["x"].asInt() << ", " << point["y"].asInt() << std::endl;
    }
}
1
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
27.08.2014, 14:58  [ТС] #21
Спасибо конечно) Я перед тем как вы написали сообщение открыл еще один метод! Но ваш лучше...
C++
1
2
3
4
        for(int i=0; i < map.size(); ++i){
            cout << map[i].get("x", "no-x") << endl;
            cout << map[i].get("y", "no-y") << endl;
        }
Добавлено через 20 часов 34 минуты
Цитата Сообщение от Валеркуй Посмотреть сообщение
Есть конкретные вопросы - задавайте, при условии что ответов на них нет в официальной документации.
Опять привет!!! Есть такой случай, все собирается компилится все отлично, но!
Когда я подключаю еще одну библиотеку для графики она выдает ошибку если поменять менять Mtd
А если ее не менять тогда выдает ошибку json. Что делать

Добавлено через 13 минут
Цитата Сообщение от 0x10 Посмотреть сообщение
http://jsoncpp.sourceforge.net/class...1_1_value.html
Что делать-то? Или можно как отдельную dll скомпилировать, а потом подключить как-то???
0
0x10
2475 / 1648 / 247
Регистрация: 24.11.2012
Сообщений: 4,070
27.08.2014, 15:54 #22
Цитата Сообщение от Валеркуй Посмотреть сообщение
Что делать-то?
Пройтись по всем солюшнам и проставить значение опции (см пост 17) одинаковым.
0
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
27.08.2014, 16:07  [ТС] #23
Цитата Сообщение от 0x10 Посмотреть сообщение
солюшнам
Вот сейчас вообще непонятно!!! Когда я подключаю jsoncpp то захожу в свойства проэкта и там делаю многопоточность без dll. А Если я ее включаю тогда другая либа не работает!!! потому что ей нужно с dll!
0
0x10
2475 / 1648 / 247
Регистрация: 24.11.2012
Сообщений: 4,070
27.08.2014, 16:10 #24
Цитата Сообщение от Валеркуй Посмотреть сообщение
Вот сейчас вообще непонятно!!! Когда я подключаю jsoncpp то захожу в свойства проэкта и там делаю многопоточность без dll. А Если я ее включаю тогда другая либа не работает!!! потому что ей нужно с dll!
Либо третью либо пересобрать со статическим рантаймом, либо пересборать jsoncpp и приложение с dll.
1
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
27.08.2014, 16:35  [ТС] #25
Я пересобрал jsonspp но там Mtd поменял на MDd собралось вроде и работает! Чтоб я без тебя делал
Возьми в падаваны

Добавлено через 7 минут
Теперь всместе тестил РАБОТААЕТ!!!
0
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
06.09.2014, 18:41  [ТС] #26
Цитата Сообщение от 0x10 Посмотреть сообщение
Есть конкретные вопросы - задавайте
Привет! Ну я опять к тебе!!! Есть такой класс:
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
/*uploader_lvl*/
#include <iostream>
#include <json/json.h>
#include <string>
#include "parser.h"
using namespace std;
 
class Map{
public:
    struct Object_map{
        int x,
            y,
            _W,
            _H,
            rect_x,
            rect_y;
    };
 
    Object_map object_map[200];//количество игровых объектов
 
    void import_file(){
        TreeParser pars;
        string str = pars._get_file_to_string("c:/map1.json");
 
        Json::Value root;   // will contains the root value after parsing.
        Json::Reader reader;
        bool parsingSuccessful = reader.parse(str,root);
        if ( !parsingSuccessful )
        {
            // report to the user the failure and their locations in the document.
            std::cout  << "Failed to parse configuration\n"
                       << reader.getFormattedErrorMessages();
        }
            const Json::Value map_obj = root["map"];//считываем объекты
 
        for(int i=0; i < map_obj.size(); i++){
 
            object_map[i].rect_x = map_obj[i].get("rect_x", "0").asInt();
            object_map[i].rect_y = map_obj[i].get("rect_y", "0").asInt();
            object_map[i]._W = map_obj[i].get("_W", "0").asInt();
            object_map[i]._H = map_obj[i].get("_H", "0").asInt();
            object_map[i].x = map_obj[i].get("x", "0").asInt();
            object_map[i].y = map_obj[i].get("y", "0").asInt();
        }
    }
};
В маине:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include "uploader_lvl.h"
 
using namespace std;
 
int main(){
 
    Map map;
    map.import_file();
    cout << "Parsing complente!"<<endl;
    system("pause");
    return 0;
}
После того как все компилиться прогамма в дебаг режиме начинает много-много матюкаться:

Необработанное исключение в "0x770770f4" в "boost_parser.exe": 0xC0000005: Access violation.

и стрелочкой (зеленой) указывает на безобидную строку:
C++
1
    cout << "Parsing complente!"<<endl;
0
0x10
2475 / 1648 / 247
Регистрация: 24.11.2012
Сообщений: 4,070
06.09.2014, 18:55 #27
Выглядит как вылет за границы. Первое, что хочется проверить - соответствие размеров исходного массива и результирующего.
А так - ставить в отладчике точку останова в функции и смотреть по шагам.
0
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
06.09.2014, 19:08  [ТС] #28
Цитата Сообщение от 0x10 Посмотреть сообщение
соответствие размеров исходного массива и результирующего
В общем не совсем понял что за точка остановки, но я попытался сначала увеличить
C++
1
Object_map object_map[200];
на 300, выдало тоже самое, потом на 500, ничего потом на 1000! Заработало!!!
Эх сделать бы динамический массив структур...

Добавлено через 5 минут
Ахаха, открыл сам json фалик и посчитал сколько там объектов, вышло 544 =) Что-то я в редакторе game maker
перестарался)))
0
06.09.2014, 19:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2014, 19:08
Привет! Вот еще темы с ответами:

Как сделать переменную с использованием в названии значения другой переменной? - C#
Как осуществить так сказать использование значения переменной в названии другой переменной for (int i = 1; i &lt;= 3; i++) { ...

Записать логическое условие того, что точка лежит внутри фигуры - Turbo Pascal
3. Записать логическое условие того, что точка с координатами (х,у) лежит внутри фигуры, изображенной на рисунке.

Как присвоить переменной по нажатию кнопки значение того что введется в текстбокс? - C#
в общем есть 2 кнопки и 2 текст бокса, нужно чтобы при нажатии на первую введенный текст становился значением переменной, а при нажатии на...

Вероятность того, что точка лежит вне круга, вписанного в этот треугольник - Теория вероятностей
В правильном треугольнике со стороной 16 см случайным образом выбирают точку. Какова вероятность того, что точка лежит вне круга вписанного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru