Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/12: Рейтинг темы: голосов - 12, средняя оценка - 5.00
 Аватар для MaXaS
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164

Обращение к уже существующему классу

16.04.2012, 11:57. Показов 2591. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В одном классе мы объявляем объект другого класса. Как из созданного класса обратиться к "родительскому" классу?(не создать объект родительского класса)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.04.2012, 11:57
Ответы с готовыми решениями:

Как к существующему классу прикрутить какую либо переменную или метод
как в С# к существующему классу прикрутить какую либо переменную или метод??? например к кнопке какую либо булево переменную... на делфи...

Прибавить число к уже существующему в TextView
Подскажите как сумировать числа, вводимые через EditText, в TextView по нажатию кнопки. Так что бы числа каждый раз сумировались, а не...

Как подключить Identity к уже существующему проекту
Всем привет. Подскажите, пожалуйста, как подключить Identity к уже существующему проекту. Google везде дает ссылки на приложения на С, а у...

18
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
16.04.2012, 12:20
передать указатель в параметрах..
0
 Аватар для MaXaS
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
16.04.2012, 14:51  [ТС]
Можно пример?
0
Эксперт С++
 Аватар для Maxim Prishchepa
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
16.04.2012, 14:56
C++ (Qt)
1
2
3
4
5
6
7
8
9
class MyClass :public QObject{
public: MyClass(QObject *parent):QObject(parent){}
public: void someFunc(){
       QObject * parentClass = parent();  //get parent for current class
       MyParentClass * pClass = qobject_cast<MyParentClass *>(parentClass); //cast QObject * to ParentClass
       if(pClass == NULL)
          return;
   }
};
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.04.2012, 15:07
A.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#ifndef __A_H__
#define __A_H__
 
#include "B.h"
 
class A {
public:
    A();
private:
    B b;
};
 
#endif //__A_H__

A.cpp
C++
1
2
3
4
5
#include "A.h"
 
A::A() : b(this)
{
}

B.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#ifndef __B_H__
#define __B_H__
 
class A;
 
class B {
public:
    B(A* p);
private:
    A* parent;
};
 
#endif //__B_H__

B.cpp
C++
1
2
3
4
5
#include "A.h"
 
B::B(A* p) : parent(p)
{
}
0
 Аватар для MaXaS
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
16.04.2012, 15:11  [ТС]
Если не трудно, покажешь на примере, а то я опять не догоняю?
Класс создан из FrontWindow
Хедер
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef PORTSCAN_H
#define PORTSCAN_H
 
#include <QObject>
#include "frontwindow.h"
#include "QTcpSocket"
 
 
class PortScan : public QObject
{
    Q_OBJECT
public:
    explicit PortScan(QObject *parent = 0);
signals:
    
public slots:
    
private:
};
 
#endif // PORTSCAN_H
срр
C++ (Qt)
1
2
3
4
5
6
#include "portscan.h"
 
PortScan::PortScan(QObject *parent) :
    QObject(parent)
{
}
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.04.2012, 15:15
Цитата Сообщение от MaXaS Посмотреть сообщение
Если не трудно, покажешь на примере, а то я опять не догоняю?
Класс создан из FrontWindow
и где этот FrontWindow? Для чего PortScan нужен FrontWindow? Сканнер портов не должен ничего знать о GUI-окне
0
 Аватар для MaXaS
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
16.04.2012, 15:35  [ТС]
Была идея сделать сам сканер строкой, чтобы она возвращала результаты сканирования, но для того, чтобы результаты поступали динамически(по мере обнаружения портов) я создал в гуй окне функцию, добавляющюю в результат найденный порт. И соответственно сканер вызывает эту функцию, когда находит порт. Ну вот
Полный Portscan.cpp
Хедер такой же.
C++ (Qt)
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
#include "portscan.h"
 
PortScan::PortScan(QObject *parent) :
    QObject(parent)
{
}
//-------------------------------------------------------------------
void PortScan::start(QString &IP, int &StartPort, int &EndPort){
    FrontWindow f;
    QString out = "Scan started!\n\n";
    int tempPort = StartPort;
 
    qDebug() << out;
    f.AppendToPortOut(out);
    socket = new QTcpSocket(this);
 
    while(tempPort<=EndPort){
 
        socket->connectToHost(IP, tempPort);
 
        if(socket->waitForConnected()){
            out = QString("%1 has opened port: %2").arg(IP).arg(tempPort);
            qDebug() << out;
            f.AppendToPortOut(out);
 
            socket->close();
 
        }
        tempPort++;
    }
    delete socket;
 
    out = QString("\nScan finished!");
    qDebug() << out;
    f.AppendToPortOut(out);
}
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.04.2012, 15:37
MaXaS, так и используй сигналы и слоты
Сканнер что-то нашел и посылает сигнал, cлот окна поймал сигнал, передача данных через параметры
0
 Аватар для MaXaS
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
16.04.2012, 15:51  [ТС]
Ок, а можно на моем примере показать вызов родительского класса?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.04.2012, 15:56
A.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef __A_H__
#define __A_H__
 
#include "B.h"
 
class A {
public:
    A();
    void helloWorld() const { std::cout << "hello world\n"; }
private:
    B b;
};
 
#endif //__A_H__

A.cpp
C++
1
2
3
4
5
#include "A.h"
 
A::A() : b(this)
{
}

B.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef __B_H__
#define __B_H__
 
class A;
 
class B {
public:
    B(A* p);
    void callFromBase() { parent->helloWorld(); }
private:
    A* parent;
};
 
#endif //__B_H__

B.cpp
C++
1
2
3
4
5
#include "A.h"
 
B::B(A* p) : parent(p)
{
}


Добавлено через 1 минуту
Цитата Сообщение от MaXaS Посмотреть сообщение
Ок, а можно на моем примере показать вызов родительского класса?
на вашем? нельзя, либо вы сейчас разберетесь с моим примером либо и дальше будете клянчить на форуме столь примитивные вещи!?
1
 Аватар для MaXaS
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
16.04.2012, 22:47  [ТС]
Ок, все ясно кроме следующего: что такое B(A* p); в хедере?
0
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
16.04.2012, 22:51
в конструктор класса В передается указатель на класс А
0
 Аватар для MaXaS
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
16.04.2012, 23:18  [ТС]
А чем тогда отличается от explicit B(A* p);?
0
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
16.04.2012, 23:34
можете на этом этапе над этим не задумываться и считать записи одинаковыми) либо читайте про explicit-конструкторы.
0
 Аватар для MaXaS
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
17.04.2012, 00:14  [ТС]
Я вроде бы разобрался, но для закрепления решил запустить пример jupiter'a, а он не собирается(не считая неработающего cout) Если не трудно, выложите рабочий вариант, а то я снова запутался
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
17.04.2012, 03:05
MaXaS,
C++ (Qt)
1
2
3
#include <iostream>
...
using namespace std;
0
 Аватар для MaXaS
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
17.04.2012, 07:54  [ТС]
Серьезно, оно не собирается. Ну нде ошибка, и если можно без шуток.
*Не Iostream
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.04.2012, 08:24
untitled.zip
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.04.2012, 08:24
Помогаю со студенческими работами здесь

Добавление текста в TextBox к уже существующему тексту
Необходимо, чтобы в TextBox-е текст добавлялся к уже существующему, а не перезаписывал его. Например, при таком подходе TextBox.Text =...

Вызвать метод к уже существующему экземпляру класса
Здравствуйте, помогите пожалуйста вызвать метод закрытия, я понимаю что возможно это просто и для человека с опытом не составит никакого...

Как установить иконку уже существующему exe-файлу?
С извлечением все понятно, берем класс Icon и чудесный метод ExtractAssociatedIcon, таким образом получаем иконку exe файла. Но меня...

Откуда метод NewGuid знает, что он не равен уже существующему Guid
Всем привет! Ребят поясните мне пж. Загружаю аватары пользователей (файлы изображений) и чтобы имена файлов были уникальными, делаю...

Создание текстового файла с консоли (либо добавление текста к уже существующему файлу)
Создание текстового файла с консоли. Если файл с указанным именем уже существует, то произвести добавление информации к уже существующему...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru