0 / 0 / 0
Регистрация: 02.03.2016
Сообщений: 36
1

Обращение к переменной через класс

06.04.2016, 15:02. Показов 2716. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую. Подскажите пожалуйста

Имеется следующий класс:

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
class Symbol_table{
    vector<Variable>var_table;
 
 
 
 
    double get(string s)
{
    for (int i = 0; i<var_table.size(); ++i)
        if (var_table[i].name == s) return var_table[i].value;
    perror("get: undefined name ");
}
 
//-------------------------------------//
 
    void set(string s, double d)
{
    for (int i = 0; i<var_table.size(); ++i){
        if(var_table[i].type==true)perror("Ошибка. Попытка изменить константу\n"); else
        if (var_table[i].name == s) {
            var_table[i].value = d;
            return;
        }}
    perror("set: undefined name ");
}
 
//---------------------------------------//
 
    bool is_declared(string s)
{
    for (int i = 0; i<var_table.size(); ++i)
        if (var_table[i].name == s) return true;
    return false;
}
 
 
//--------------------------------------//
    double define_name(string var, double val){
    for(int i=0;i<var_table.size();++i){
        if(var_table[i].type==true)perror("Ошибка. Попытка изменить константу\n"); else
        if(var_table[i].name==var) {var_table[i].value=val;} else
            var_table.push_back(Variable(var,val));
    };
    //if(is_declared(var)) perror("declared twice");
    //names.push_back(Variable(var,val));
    return val;
}}

Я создал переменную типа Symbol_table, допустим это переменная Symbol.

Класс variable, на котором основан вектор, который используется в классе symbol_table

C++
1
2
3
4
5
6
7
8
struct Variable {
    string name;
    double value;
    bool type;
    Variable(string n, double v) :type(false),name(n), value(v) { }
    Variable(string n, double v, bool type): name(n), value(v), type(type){} //если передано 3 аргумента значит их передает константа
 
};
Вопрос в том, что как мне через переменную типа Symbol_table обратиться к полям name, value, которые определены в variable?

Я пробовал писать что-то наподобие Symbol.var_table.name, но так оно не хочет передавать туда значения, даже не компилируется.

Вообще раньше функции, которые внутри класса Symbol_table были просто вне класса, теперь задача их организовать именно внутри класса. Я подумал, что если создать переменную типа Symbol_table она будет хранить в себе вектор, а значит к элементам вектора можно как-то обратиться через нее. Подскажите как это можно организовать и вообще в правильном направлении ли я думаю?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2016, 15:02
Ответы с готовыми решениями:

Map: обращение к значению (класс) через []
Всем добрый день. Подскажите пожалуйста почему в 14 строчке без пустого конструктора пример не...

Обращение к переменной через динамическую генерацию ее имени
Предположим у нас есть 10 переменных. string s1,s2,s3,s4....,s10; Как в цикле обратиться к...

Обращение к элементу массива через значение переменной
Ключ массива хранится в виде значения переменной, например: $key=&quot;&quot; или так $key='' т.е...

Обращение к классу через значение переменной, т.е. по имени в строковом представлении
К примеру есть переменная str типа string со значением &quot;myClass&quot;. Как обратиться к классу myClass...

1
47 / 31 / 21
Регистрация: 04.04.2016
Сообщений: 209
07.04.2016, 09:10 2
Для начала стоит внутри вашего класса задать модификатор доступа public:, после которого и объявлять свои переменные. без явного объявления модификатора доступа все переменные класса имеют модификатор private:, т.е. обратиться к ним из вне не получится. А так обращение происходит именно так, как вы написали.
Symbol.var_table.name
ну, и + множество ошибок в определении самого класса, которые не мешало бы устранить. Если есть проблемы с синтаксисом языка, рекомендую писать код не сразу всей простыней, а потом искать ошибки, а небольшими кусками. И после каждого куска запускать компиляцию и проверять на наличие синтаксических и логических ошибок. т.е. написали название класса, накидали переменных, сделали конструктор - попробовали скомпилировать. Отладили. Написали пару методов - попробовали скомпилировать, отладили.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2016, 09:10
Помогаю со студенческими работами здесь

Свой тип переменной через класс, шаблоны
Задание вот такое: общая постановка. Дано: число N и последовательность (a1+1), (a2+2) , (a3+3), …,...

Возможно ли обращение к переменной с использованием значения строковой переменной?
Есть структура из 20ти различных элементов. Необходимо сформировать строковую переменную, которая...

Запретить прямое обращение к скрипту, но разрешить обращение через RewriteEngine
основной файл у меня index.php и в нем уже определяется какой файл подключить, к примеру ...

Обращение к переменной
Здравствуйте, подскажите пожалуйста в одном вопросе. У нас есть variables.h в котором лежат...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru