4 / 4 / 3
Регистрация: 23.10.2012
Сообщений: 233
1

Обратится ко второму классу

11.01.2014, 19:19. Показов 421. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь через вызов первого класса вывести info второго класса, но никак соответственно все разбиваю по файлам)
Cfirst.h
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
#ifndef CFIRST
#define CFIRST
 
class CFirst{
    CSecond* second; //создаем обьект на второй класс
public:
    CFirst(); //конструктор по умол
    CFirst(CSecond* Second); // конструктор с парам
    void setSecond(CSecond* Second); 
    CSecond* Second ();
};
first.cpp
[CPP]#include <iostream>
#include "CFirst.h"
#include "CSecond.h"
using namespace std;
 
    CFirst::CFirst(){}
    CFirst::CFirst(CSecond* Second){ // здесь подчеркив ::CFirst( пишет перегруженная функция член не найдена
        setSecond(Second);
    }
    void CFirst::setSecond(CSecond* Second){ // и все последующие функции подчеркивает
        second=Second;
    }
     CSecond* CFirst::Second(){
         return second;
     }
CSecond.h
#endif[/CPP]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef FIRST
#define FIRST
 
class CSecond{
    char soname[32];
public:
    CSecond();
    CSecond(char*);
    void PrintSoname(char*);
    char* getSoname();
    void info();
};
 
#endif
second.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include "CSecond.h"
using namespace std;
 
    CSecond::CSecond(){}
    CSecond::CSecond(char* Soname){
        PrintSoname(Soname);
    }
    void CSecond::PrintSoname(char* Soname){
        cin>>Soname;
                strcpy(soname,Soname);
    }
    char* CSecond::getSoname(){
        return soname;
    }
    void CSecond::info(){
        cout<<soname<<endl;
    }
main.cpp
C++
1
2
3
4
5
6
7
8
9
#include <iostream>  
#include "CFirst.h"
#include "CSecond.h"
using namespace std;
 
void main(){
    CFirst ob();
    ob.info();
}
Добавлено через 1 минуту
Просто не могу понять и ни как не получается обратиться ко второму классу
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2014, 19:19
Ответы с готовыми решениями:

Работа с классом (как вызвать или обратится к классу из основной программы?)
помогите пожайлуста, подскажите как вызвать или обратится к классу из основной программы получается...

Нельзя обратится к public классу
IDE NetBeans. Есть 2 пакета: package animator; import pack2.*; public class Animator { ...

Обратится к элементу
Как обратится к метке родительского элемента, и изменить ее значение? Для того чтобы изменить...

Обратится к элементу массива
В результате запроса mysqli выдаёт результат в var_dump array(2) { =&gt; string(3) &quot;600&quot; =&gt; ...

6
5496 / 4891 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.01.2014, 19:31 2
C++
1
2
CFirst ob;
ob.second ->info();
Только делайте second public (или метод для доступа к private).
1
Модератор
Эксперт С++
13111 / 10381 / 6209
Регистрация: 18.12.2011
Сообщений: 27,764
11.01.2014, 19:37 3
Цитата Сообщение от alsav22 Посмотреть сообщение
Только делайте second public (или метод для доступа к private).
Еще класс Second должет быть объявлен до CFirst
C++
1
2
3
4
5
6
7
8
9
#include <iostream>  
using namespace std;
#include "CSecond.h"
#include "CFirst.h"
 
void main(){
    CFirst ob();
    ob.info();
}
1
4 / 4 / 3
Регистрация: 23.10.2012
Сообщений: 233
11.01.2014, 19:50  [ТС] 4
Цитата Сообщение от alsav22 Посмотреть сообщение
Только делайте second public (или метод для доступа к private).
Ну а разве его уже нет? Делаю по похожему рабочему примеру примеру
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include "CFirst.h"
#include "CSecond.h"
using namespace std;
 
    CFirst::CFirst(){}
    CFirst::CFirst(CSecond* Second){  // но почемуто ::CFirst( подчеркивает, пробовал сюда конструктор
копирования но он тут вроде не причем  
        setSecond(Second);
    }
    void CFirst::setSecond(CSecond* Second){
        second=Second;
    }
     CSecond* CFirst::Second(){
         return second;
     }
        void CFirst::info(){
            cout<<name<<endl;
        }
0
5496 / 4891 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.01.2014, 19:56 5
Цитата Сообщение от zss Посмотреть сообщение
Еще класс Second должет быть объявлен до CFirst
Или:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#ifndef CFIRST
#define CFIRST
class CSecond;
 
class CFirst{
    CSecond* second; //создаем обьект на второй класс
public:
    CFirst(); //конструктор по умол
    CFirst(CSecond* Second); // конструктор с парам
    void setSecond(CSecond* Second); 
    CSecond* Second ();
};
Добавлено через 2 минуты
Цитата Сообщение от I love myguitar Посмотреть сообщение
Ну а разве его уже нет?
Раз есть - значит используйте (название нужно заметней давать: getSecond()):
C++
1
2
CFirst ob;
ob.Second()->info();
1
4 / 4 / 3
Регистрация: 23.10.2012
Сообщений: 233
11.01.2014, 20:29  [ТС] 6
А в рабочем примере так никаких обьявлений до CFirst нет, разве недостаточно в cpp-щном файле подключения
C++
1
#include "CSecond.h"
0
5496 / 4891 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.01.2014, 20:49 7
Цитата Сообщение от I love myguitar Посмотреть сообщение
А в рабочем примере так никаких обьявлений до CFirst нет
А кто его видит (рабочий пример)? Может там и не нужно.
Цитата Сообщение от I love myguitar Посмотреть сообщение
разве недостаточно в cpp-щном файле подключения
Недостаточно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2014, 20:49
Помогаю со студенческими работами здесь

Обратится к файлу в проекте
Я добавил файл в проект, мне надо его программно скопировать, как обратиться к файлу в проекте?

Обратится к Form1 из usercontrol
Привет! Есть приложение в него вставил отдельно написаный userControl (dll). Как дописать...

Обратится к табличной части
Всем доброго времени суток! Смешной вопрос, но тем не менее проблема... Есть типовая...

Как обратится к элементу
Подскажите как получить достук к элементу с id который создается программно через массив причем id...


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

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

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