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

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

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

Author24 — интернет-сервис помощи студентам
В одном классе мы объявляем объект другого класса. Как из созданного класса обратиться к "родительскому" классу?(не создать объект родительского класса)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2012, 11:57
Ответы с готовыми решениями:

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

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

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

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

18
Автор FAQ
2732 / 1428 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
16.04.2012, 12:20 2
передать указатель в параметрах..
0
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
16.04.2012, 14:51  [ТС] 3
Можно пример?
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
16.04.2012, 14:56 4
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
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.04.2012, 15:07 5
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
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
16.04.2012, 15:11  [ТС] 6
Если не трудно, покажешь на примере, а то я опять не догоняю?
Класс создан из 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
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.04.2012, 15:15 7
Цитата Сообщение от MaXaS Посмотреть сообщение
Если не трудно, покажешь на примере, а то я опять не догоняю?
Класс создан из FrontWindow
и где этот FrontWindow? Для чего PortScan нужен FrontWindow? Сканнер портов не должен ничего знать о GUI-окне
0
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
16.04.2012, 15:35  [ТС] 8
Была идея сделать сам сканер строкой, чтобы она возвращала результаты сканирования, но для того, чтобы результаты поступали динамически(по мере обнаружения портов) я создал в гуй окне функцию, добавляющюю в результат найденный порт. И соответственно сканер вызывает эту функцию, когда находит порт. Ну вот
Полный 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
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.04.2012, 15:37 9
MaXaS, так и используй сигналы и слоты
Сканнер что-то нашел и посылает сигнал, cлот окна поймал сигнал, передача данных через параметры
0
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
16.04.2012, 15:51  [ТС] 10
Ок, а можно на моем примере показать вызов родительского класса?
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.04.2012, 15:56 11
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
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
16.04.2012, 22:47  [ТС] 12
Ок, все ясно кроме следующего: что такое B(A* p); в хедере?
0
Автор FAQ
2732 / 1428 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
16.04.2012, 22:51 13
в конструктор класса В передается указатель на класс А
0
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
16.04.2012, 23:18  [ТС] 14
А чем тогда отличается от explicit B(A* p);?
0
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
16.04.2012, 23:34 15
можете на этом этапе над этим не задумываться и считать записи одинаковыми) либо читайте про explicit-конструкторы.
0
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
17.04.2012, 00:14  [ТС] 16
Я вроде бы разобрался, но для закрепления решил запустить пример jupiter'a, а он не собирается(не считая неработающего cout) Если не трудно, выложите рабочий вариант, а то я снова запутался
0
Прогер
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
17.04.2012, 03:05 17
MaXaS,
C++ (Qt)
1
2
3
#include <iostream>
...
using namespace std;
0
11 / 11 / 3
Регистрация: 22.05.2011
Сообщений: 164
17.04.2012, 07:54  [ТС] 18
Серьезно, оно не собирается. Ну нде ошибка, и если можно без шуток.
*Не Iostream
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.04.2012, 08:24 19
untitled.zip
1
17.04.2012, 08:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2012, 08:24
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru