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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.88
Alejandro
0 / 0 / 0
Регистрация: 22.04.2012
Сообщений: 11
#1

Указатель на объект класса - C++

14.05.2012, 02:49. Просмотров 4135. Ответов 6
Метки нет (Все метки)

Добрый день!
Есть класс

Заполняю с помощью конструктора
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
class TStol : public TMebel  
{
protected:
    AnsiString Kol_yashikov, Kol_polok;
 
public:
    TStol(char * Imya1, char * Tsena1, char * Vysota1, char *Shirina1, char * Material1,
        char * K_yash, char *K_pol) : TMebel
        (Imya1, Tsena1, Vysota1, Shirina1, Material1) {
        Kol_yashikov = AnsiString(K_yash);
        Kol_polok = AnsiString(K_pol);
    }
Создаю объект, всё как обычно
C++ (Qt)
1
Stol Sdo(im.c_str(), ts.c_str(), vys.c_str(), shir.c_str(), mat.c_str(), kol_ya.c_str(), kol_pol.c_str());
Но нужно сделать через указатели

C++ (Qt)
1
2
TStol* S = new (TStol);
S->Kol_polok = 3;
соответственно ошибка, переменная не доступна
E2247 'TStol::Kol_polok' is not accessible

Может кто-нибудь подсказать как получить доступ к переменным?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2012, 02:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатель на объект класса (C++):

Указатель на объект базового класса и адрес объекта производного класса - C++
Пример кода: class Class1 { public: Class1(int x) { j = new int; *j = x; } ~Class1() {delete j;}

Использование в качестве поля класса указатель на объект другого класса - C++
Ошибка в названии - "указателЯ" Вот, пытаюсь освоить ООП (пока только учусь): создаю класс person (человек) и car (модель машины). ...

Правда, что указатель класса-наследника не может указывать на объект класса-родителя? - C++
Доброго времени суток! Пример кода ниже. Правда ли , что указатель класса-наследника не может указывать на объект класса-родителя? ...

Статический указатель класса на объект этого же класса - C++
Не пойму: что в этом коде не так? #include <iostream> #include <cstdlib> using namespace std; struct A { int x; ...

Недопустимый неполный тип , или как передать в функцию указатель на объект класса , или просто объект - C++
Други мои , кодеры. Не могу я ни как передать в функцию объект класса , или что еще лучше(для меня , так как учусь работать с указателями)...

Указатель на объект класса - C++
Есть условие - есть класс First, который содержит объект класса Second, а в класс Third надо передать указатель на объект класса Second,...

6
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
14.05.2012, 03:41 #2
C++
1
TStol* S = new TStol();
0
Avazart
Нарушитель
Эксперт С++
7226 / 5398 / 291
Регистрация: 10.12.2010
Сообщений: 23,933
Записей в блоге: 17
14.05.2012, 03:55 #3
C++
1
2
3
TStol* S = new (im.c_str(), ts.c_str(), vys.c_str(), shir.c_str(), mat.c_str(), kol_ya.c_str(), kol_pol.c_str());
S->Kol_polok = 3;
delete S;
Либо
C++
1
2
3
Stol Sdo(im.c_str(), ts.c_str(), vys.c_str(), shir.c_str(), mat.c_str(), kol_ya.c_str(), kol_pol.c_str());
TStol* S=&Sdo;
S->Kol_polok = 3;
1
Alejandro
0 / 0 / 0
Регистрация: 22.04.2012
Сообщений: 11
14.05.2012, 14:58  [ТС] #4
Второй способ работает. Надеюсь что прокатит.
Avazart, благодарю!
0
Avazart
Нарушитель
Эксперт С++
7226 / 5398 / 291
Регистрация: 10.12.2010
Сообщений: 23,933
Записей в блоге: 17
14.05.2012, 15:06 #5
В первом пропустил словечко

C++
1
2
3
TStol* S = new TStol(im.c_str(), ts.c_str(), vys.c_str(), shir.c_str(), mat.c_str(), kol_ya.c_str(), kol_pol.c_str());
S->Kol_polok = 3;
delete S;
А вообще перегрузи конструктор
C++
1
2
3
4
5
6
TStol(TStol obj)
 {
 Kol_yashikov=obj.Kol_yashikov;
 Kol_polok=obj.Kol_polok;
 //итд другие поля
 }
И переменные в public перемести чтоб работало
C++
1
2
TStol* S = new (TStol);
S->Kol_polok = 3;
1
Alejandro
0 / 0 / 0
Регистрация: 22.04.2012
Сообщений: 11
14.05.2012, 15:19  [ТС] #6
И переменные в public перемести чтоб работало

C++
1
2
TStol* S = new (TStol);
S->Kol_polok = 3;
В public нельзя, потому что есть абстрактный базовый класс, там все поля в protected

Перегрузить попробую

Первый способ, вообще то что нужно!
0
Avazart
Нарушитель
Эксперт С++
7226 / 5398 / 291
Регистрация: 10.12.2010
Сообщений: 23,933
Записей в блоге: 17
14.05.2012, 15:23 #7
Тогда должны быть открытые методы для чтения и установки полей.
0
14.05.2012, 15:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2012, 15:23
Привет! Вот еще темы с ответами:

Двойной указатель на объект класса - C++
Подскажите что означает следующее определение объекта класса. A **myA; где - A имя класса, а myA его объект. Мне не понятно что...

Указатель на объект, или экземпляр класса? - C++
Здравствуйте Уважаемые программисты! Недавно я начал изучать программирование с использованием С++. Ранее не программировал. В качестве...

Не удается разыменовать указатель на объект класса - C++
Добрый день, знатоки c++. Пишу программу, уровень знаний базовый. Нуждаюсь в совете профессионалов. Создал класс node. ClassNode.h: ...

Указатель на объект из указателя на член класса - C++
Что как-то сей вопрос ставит меня в тупик. class A { int i; } obj; int main()


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

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

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