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

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

Восстановить пароль Регистрация
 
I love myguitar
4 / 4 / 1
Регистрация: 23.10.2012
Сообщений: 233
11.01.2014, 19:19     Обратится ко второму классу #1
Пытаюсь через вызов первого класса вывести 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 минуту
Просто не могу понять и ни как не получается обратиться ко второму классу
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.01.2014, 19:31     Обратится ко второму классу #2
C++
1
2
CFirst ob;
ob.second ->info();
Только делайте second public (или метод для доступа к private).
zss
Модератор
Эксперт С++
 Аватар для zss
5949 / 5554 / 1785
Регистрация: 18.12.2011
Сообщений: 14,193
Завершенные тесты: 1
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();
}
I love myguitar
4 / 4 / 1
Регистрация: 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;
        }
alsav22
5282 / 4801 / 442
Регистрация: 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();
I love myguitar
4 / 4 / 1
Регистрация: 23.10.2012
Сообщений: 233
11.01.2014, 20:29  [ТС]     Обратится ко второму классу #6
А в рабочем примере так никаких обьявлений до CFirst нет, разве недостаточно в cpp-щном файле подключения
C++
1
#include "CSecond.h"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2014, 20:49     Обратится ко второму классу
Еще ссылки по теме:

Обращение ко второму элементу массива указателей на строки C++
Работа с классом (как вызвать или обратится к классу из основной программы?) C++
Можно ли из базового класса обратится к виртуальному методу производного? C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.01.2014, 20:49     Обратится ко второму классу #7
Цитата Сообщение от I love myguitar Посмотреть сообщение
А в рабочем примере так никаких обьявлений до CFirst нет
А кто его видит (рабочий пример)? Может там и не нужно.
Цитата Сообщение от I love myguitar Посмотреть сообщение
разве недостаточно в cpp-щном файле подключения
Недостаточно.
Yandex
Объявления
11.01.2014, 20:49     Обратится ко второму классу
Ответ Создать тему
Опции темы

Текущее время: 21:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru