Как обратиться к полям класса?
Есть класс в котором в полях заданы некоторые параметры, я создал объект (через указатель), но не знаю как выводить его параметры. То есть то, как описал я вызывает ошибки (строки 5- 10 ), помогите пожалуйста.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
int main() { Animals *Ringo = new Animals(2, 4, "Africa", "gray", false); cout "Ringo" endl; cout "Size; " Ringo.Size endl; cout "number of limbs; " Animals::Limbs endl; cout "Where are he now? " Animals::Whence endl; cout "Int color; " Animals::Int_Color endl; cout "This animal flies? "; if (Animals::Flies == 1) { cout "Yes" endl; } else { cout "No" endl; } cout endl endl; //Ringo->Show(); delete Ringo;
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Обратиться к полям текущего класса из методов другого
Создать два класса — в первом объявить несколько полей в private секции. Обратиться к этим полям из.
Как обратиться к полям структуры через указатель и объявление указателя на структуру
Как обратиться к полям структуры через указатель и объявление указателя на структуру? #include.

LinkedList составленный из объектов класса, как обратиться к полям объектов
Не могу сообразить как обратиться к полям объектов, добавленных в LinkedList. Суть такая: есть.
Регистрация: 06.04.2017
Сообщений: 7
Т.к. кусок выдран из контекста, то могу только предположить возможное решение.
1 2 3 4 5 6 7 8
. cout "Size; " Ringo->Size endl; cout "number of limbs; " Ringo->Limbs endl; cout "Where are he now? " Ringo->Whence endl; cout "Int color; " Ringo->Int_Color endl; cout "This animal flies? "; if (Ringo->Flies) .
Регистрация: 16.11.2016
Сообщений: 892
К сожалению если реализовать так, как говорит Tossey, то ошибки всё равно останутся, возможно кто-то захочет помочь, вот программа полностью (необходимо исправить строки 208 — 213, именно Ringo.Size и прочее, и строка 105 пишет cur не найден). Заранее огромное спасибо.
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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243
#include "stdafx.h" #include #include #include using namespace std; static bool Drink_Milk = true; class Animals { protected: int Size; int Limbs; //кол-во конечностей string Whence; //откуда string Int_Color; //основной цвет/окраска bool Flies; static Animals *first; Animals *next; public: Animals::Animals(int size, int limbs, string whence, string int_color, bool flies) { Size = size; Limbs = limbs; Whence = whence; Int_Color = int_color; Flies = flies; cout "constr" endl endl; Animals *cur; if (first == NULL) { first = this; first->next = NULL; } else { cur = first; while (cur->next) cur = cur->next; cur->next = this; this->next = NULL; } } Animals::~Animals() { cout "Destr working" endl endl; if (first == NULL) { cout "List is empty" endl; } else { Animals *cur; cur = first; if (cur == this) { first = cur->next; } else { while (cur->next) { if (cur->next == this) { cur->next = next; break; } cur = cur->next; } } } } virtual void Show() { }; static void Show1() { if (first == NULL) { cout "List is empty, its static void Show" endl; } else { Animals* cur = first; while (cur) { cur->Animals::Show(); cur = cur->next; } } } void Add() { if (first == NULL) { first = this; first->next = NULL; } else { cur = first; while (cur->next) cur = cur->next; cur->next = this; this->next = NULL; } } }; Animals* Animals::first = 0; class Birds : public Animals { public: bool Fly_away_in_winter; Birds(int size, int limbs, string whence, string int_color, bool flies, bool fly_away_in_winter) : Animals(size, limbs, whence, int_color, flies) { Fly_away_in_winter = fly_away_in_winter; } void Show() { cout "Size; " Animals::Size endl; cout "number of limbs; " Animals::Limbs endl; cout "Where are he now? " Animals::Whence endl; cout "Int color; " Animals::Int_Color endl; cout "This animal flies? "; if (Animals::Flies == 1) { cout "Yes" endl; } else { cout "No" endl; } cout "This bird fly away in winter? "; if (Birds::Fly_away_in_winter == 1) { cout "Yes" endl; } else { cout "No" endl; } cout endl endl; }; }; class Mammals : public Animals { public: static bool Drink_Milk; Mammals(int size, int limbs, string whence, string int_color, bool flies) : Animals(size, limbs, whence, int_color, flies) { } void Show() { cout "Size; " Animals::Size endl; cout "number of limbs; " Animals::Limbs endl; cout "Where are he now? " Animals::Whence endl; cout "Int color; " Animals::Int_Color endl; cout "This animal flies? "; if (Animals::Flies == 1) { cout "Yes" endl; } else { cout "No" endl; } cout "Drink Milk? Yes" endl endl; } }; class Artiodactyls : public Mammals { //парнокопытные public: Artiodactyls(int size, int limbs, string whence, string int_color, bool flies) : Mammals(size, limbs, whence, int_color, flies) { } void Show() { cout "Size; " Animals::Size endl; cout "number of limbs; " Animals::Limbs endl; cout "Where are he now? " Animals::Whence endl; cout "Int color; " Animals::Int_Color endl; cout "This animal flies? "; if (Animals::Flies == 1) { cout "Yes" endl; } else { cout "No" endl; } cout "Drink Milk? Yes" endl endl; } }; int main() { Animals *Ringo = new Animals(2, 4, "Africa", "gray", false); cout "Ringo" endl; cout "Size; " Ringo->Size endl; cout "number of limbs; " Animals::Limbs endl; cout "Where are he now? " Animals::Whence endl; cout "Int color; " Animals::Int_Color endl; cout "This animal flies? "; if (Animals::Flies == 1) { cout "Yes" endl; } else { cout "No" endl; } cout endl endl; //Ringo->Show(); delete Ringo; Birds Eagle(1, 4, "Russia, Spain, Romania", "brown", true, true); cout "Eagle" endl; Eagle.Show(); Mammals Bear(2, 4, "Russia, Europe", "Brown", false); cout "Bear" endl; Bear.Show(); Artiodactyls Giraffe(6, 4, "Africa", "Yellow", false); cout "Giraffe" endl; Giraffe.Show(); system("pause"); return 0; }
Как обратиться к полю объекта класса?
Как обратиться к полю объекта класса Car, который находится в массиве класса Cars?
Помогите пожалуйста разобраться. Ниже три разных модуля. Как обратиться к полю объекта класса Car.
Из одного класса обратиться к полю второго
Есть первый класс, в котором public int option=5; И есть другой класс, в котором мне нужно.
Reflection — обратиться по пути к полю конкретного класса.
Никогда этим не занимался — нужно поскорей понять: Есть типа строка (сам не знаю как должна.
Как обратиться к свойству объекта WPF из метода static класса?
Как обратиться к свойству объекта WPF из метода static класса? Есть окно с меню, надписью и.
172 / 118 / 57
Регистрация: 08.01.2013
Сообщений: 651

Сообщение было отмечено JyYylik как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12
class Vector { public int x; public int y; public int z; } public static void infoVector(Vector v) { Console.Clear(); Console.WriteLine("Информация о векторе:"); Console.WriteLine("Координаты: x=" + v.x + ", y=" + v.y + ", z=" + v.z); }
Регистрация: 09.12.2019
Сообщений: 119
А как сделать метод универсальным? То есть у меня 2 вектора и про них надо вывести информацию. Как быть в таком случае? Писать 2 метода?
Добавлено через 5 минут
Все, понял. Спасибо!
172 / 118 / 57
Регистрация: 08.01.2013
Сообщений: 651
Сообщение от JyYylik 
То есть у меня 2 вектора и про них надо вывести информацию.
один из вариантов:
1 2 3 4 5 6 7 8
ListVector> list = new ListVector> Vector a, b; list.Add(a); list.Add(b); public static void infoVector(ListVector> _list) { // и здесь уже манипулировать векторами }
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Как обратиться к полю наследника класса
Создал наследника класса PictureABC, обладающего уникальными полями. В процессе работы.

Как обратиться к текстовому полю из другого класса?
Доброго вечера! Подскажите пожалуйста как обратиться к текстовому полю из другого класса? Я что-то.
Как обратиться к объекту класса родителя, из объекта дочерного класса
Вопрос скорее про c++ в целом, чем конкретно про qt имеется классы namespace Ui < class.

Может ли метод родительского класса обратиться к полю дочернего класса
Может ли метод родительского класса обратиться к полю дочернего класса?

Почему дружественная функция не может обратиться к protected полю класса?
Не могу понять, почему функция не может обратиться к protected полю класса: class Ships
как обратиться к полю?
Люди помогите. Провожу интеграцию 1Сv81 с lotus, и мне нужно обратиться к полю в 1С через его.
Как в методе обратиться к полям наследуемого класса?
Хочу написать метод, в который будет передаваться экземпляр класса и название таблицы и в зависимости от этих параметров будет формироваться запрос на добавление записи в БД к выбранной таблице.
Есть класс Parent от которого наследуются классы tb и new_table. В классе CRUD есть заголовок метода добавления в БД Add:
public static bool Add(Parent instance, string tableName)
В этот метод кладется как параметр экземпляр класса tb или new_table. Например так:
tb c = new tb("", textBox1.Text); CRUD.Add(c, "tb");
При попытке обратиться внутри метода к полям экземпляра класса tb под названием instance их просто не видно.
В классе Parent нет ничего, даже полей и в программе он нужен только для того, чтобы положить экземпляры разных классов как параметр функции.
Реализация класса tb:
public class tb : Parent < private string _id; private string _name; public string Id < get =>_id; set => _id = value; > public string Name < get =>_name; set => _name = value; > public tb(string id, string name) < Name = name; >>
Прошу подсказать:
1. Есть ли возможность как-то обратиться к полям наследуемого класса внутри метода?
2. Если такой возможности нет, то есть ли возможность передавать в метод разные экземпляры класса и что в таком случае должно быть в типе данных у экземпляра класса?
P.S. Вроде нашел способ обратиться к полям экземпляра класса через GetType().GetFields(), однако полученные поля в виде переменной объявленной через var никак не могу привести к типу лист или массив, поэтому бросил эту затею.
P.P.S Если не один из предложенных мной вариантов не является ответом на мой вопрос, то подскажите, куда следует копать. Думаю, что кто-нибудь уж точно задумывался над тем, чтобы реализовать что-то подобное, чтобы не писать для каждого класса отдельные CRUD-функционал. Если я не ошибаюсь, то нечто подобное есть в библиотеке для SQLite и там тоже есть единый метод Add, где нужно передать экземпляр класса и название таблицы.
Буду благодарен любой информации, спасибо
- Вопрос задан 30 мая
- 89 просмотров
Как обратиться к полю класса
Привет!
Подскажите как обратиться к полям базового класса?
Есть Класс Base,
производный приватно от него класс Derived и
производный публично от Derived класс Derived_1.
class Base < public: int i; Base(); const unsigned int get_addr_d(); protected: long l; private: double d; >; class Derived : private Base < private: float f; public: Derived(); Derived(int i1, long l1, float f1); friend ostream& operator; class Derived_1 : public Derived < public: Derived_1(int i1, long l1); //void foo(); >;
Следующий код почему-то не прокатывает:
Derived_1::Derived_1(int i1, long l1) < Derived::i = i1; // Derived::l = l1; cout
На строчке где идет присвоение Derived::i = i1 с ошибкой 'Base::i' is not accessible.
Пишу на на Borlsnd C++ for DOS
Как быть?
P.S. Полный код программы.
#include #include #include int i; class Base < public: int i; Base(); const unsigned int get_addr_d(); protected: long l; private: double d; >; const unsigned int Base::get_addr_d() < return (unsigned int) &d; >Base::Base() < i = 1; l = 10; d = 1.01; coutclass Derived : private Base < private: float f; public: Derived(); Derived(int i1, long l1, float f1); friend ostream& operator; ostream& operator Derived::Derived() < i = 2; l = 20; // d = 2.02; f = 22.22; coutDerived::Derived(int i1, long l1, float f1) < i = i1; l = l1; // d = d1; f = f1; coutclass Derived_1 : public Derived < public: Derived_1(int i1, long l1); //void foo(); >; Derived_1::Derived_1(int i1, long l1) < Derived::i = i1; // Derived::l = l1; cout/*void Derived_1::foo() < i++; l += 1; cout*/ int main()
Участник клубаДжуниор
Регистрация: 23.08.2008
Сообщений: 1,616
При Private-наследовании все спецификаторы меняются на Private, то есть переменная i класса Base будет доступна внутри класса Derived, но предок Derived_1 не сможет к ней обратиться. В данном случае советую использовать Protected-наследование.
pushl $0x18E3DF6B
call ICQ
| russian-stalker |
| Посмотреть профиль |
| Найти ещё сообщения от russian-stalker |
Регистрация: 08.11.2010
Сообщений: 3
Это лабараторная работа.
И в задании сказано, что для решения этой проблеммы нужно использовать возможность восстановления уровня доступа к компонентам базового класса.
Я понимаю, что такая возможность абсурдна, но видимо есть. На лекции нам говорили, что для этого нужно испльзовать оператор расширения области видимости - "::".
Но строчка
Derived::i = i1;
не проходит.
Хотя при публичном наследовании Derived от Derived_1 сама конструкция
Derived::i = i1;
возможна, но тождественна
i = i1.
Участник клубаДжуниор
Регистрация: 23.08.2008
Сообщений: 1,616
А, ну так бы сразу и сказали.
class Derived : private Base < private: float f; public: using Base::i; Derived(); Derived(int i1, long l1, float f1); friend ostream& operator;
Или тот же using, но в protected секции.
pushl $0x18E3DF6B
call ICQ
| russian-stalker |
| Посмотреть профиль |
| Найти ещё сообщения от russian-stalker |