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

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

Войти
Регистрация
Восстановить пароль
 
 
Ирина197708
10 / 10 / 1
Регистрация: 06.08.2011
Сообщений: 139
#1

Передать переменную из класса в класс - C++

16.06.2016, 11:08. Просмотров 803. Ответов 23
Метки нет (Все метки)

Добрый день, следующая задача передать переменную из класса А в класс В
class_a.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef CLASS_A_H
#define CLASS_A_H
 
 
class class_A
{
public:
    class_A();
 
    int x;
    return_x(int x);
};
 
#endif // CLASS_A_H
class_a.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "class_a.h"
#include <iostream>
 
using namespace std;
class_A::class_A()
{
    x = 5;
 
}
 
class_A::return_x(int x){
    cout << x;
    return x;
}
class_b.h
C++
1
2
3
4
5
6
7
8
9
10
11
#ifndef CLASS_B_H
#define CLASS_B_H
 
 
class class_B
{
public:
    class_B();
};
 
#endif // CLASS_B_H
class_b.cpp
C++
1
2
3
4
5
6
#include "class_b.h"
 
class_B::class_B()
{
    
}
Подскажите плиз, как реализовать?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2016, 11:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передать переменную из класса в класс (C++):

Как передать в переменную класс-наследник? - C++
Есть главный класс куда я отправляю класс-контроллер class DrawBase { private: Controller* controllerClass; public: void...

Нужно из класса наследника передать параметры в класс родителя - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; class ploskost{ protected: float d; int x1,y1,x2,y2; public: ...

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template &lt;class T&gt; class matrix { friend class diagonal; ...

Как получить private переменную класса, функцей членом другого класса - C++
Игра змейка: Есть класс поле в котором содержится размеры поля: class field { private: int FIELD_START; int...

Реализовать подсчет количества объектов класса, используя статическую переменную-член класса - C++
как реализовать подсчет количества объектов класса (используя статическую переменную-член класса), а также статическую функцию, которая...

В конструктор класса передать объект этого класса - C++
Вопрос на засыпку :) Как в конструктор класса передать объект этого класса? Т.е. class A { public: A(const char* s){} ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Terrr
5 / 5 / 1
Регистрация: 28.04.2015
Сообщений: 16
Завершенные тесты: 3
17.06.2016, 17:05 #16
Дак а что вам тогда мешает просто взять и в конструкторе класса B создать обьект класса A и забрать от туда строку?
1
Ирина197708
10 / 10 / 1
Регистрация: 06.08.2011
Сообщений: 139
17.06.2016, 17:25  [ТС] #17
Цитата Сообщение от Terrr Посмотреть сообщение
Дак а что вам тогда мешает просто взять и в конструкторе класса B создать обьект класса A и забрать от туда строку?
Если напишете пример, буду очень признательна..
0
Ирина197708
10 / 10 / 1
Регистрация: 06.08.2011
Сообщений: 139
17.06.2016, 17:31  [ТС] #18
Terrr, переписала немного Ваш код под свои запросы, и в итоге пришла к тому же с чего и начинала.
Код отработал, все замечательно, только вот пришла к тому с чего и начались мои проблемы в переменную strB, пришел мусор, а не знаение переменной...

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
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <string.h>
 
 
using namespace std;
 
class class_A {
public:
    class_A();
    char buffer[];
};
 
class_A::class_A()
{
   char strA[] = "asd";
    strcpy(buffer, strA);
 
 cout << buffer;
 
}
 
class class_B {
public:
    char *strB;
    class_B() {
        class_A a;
        strB = new char[sizeof(a.buffer)];
        strcpy_s(strB, sizeof(a.buffer), a.buffer);
        std::cout <<"\nclass B " << strB << '\n';
    }
    ~class_B() {
        delete[] strB;
    }
};
 
int main() {
    class_B b;
 //   std::cout << b.strB << '\n';
    return 0;
}
Компилятор выдал:
0
Миниатюры
Передать переменную из класса в класс  
Terrr
5 / 5 / 1
Регистрация: 28.04.2015
Сообщений: 16
Завершенные тесты: 3
17.06.2016, 17:58 #19
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Нельзя обьявлять статические массивы без указания размера, т.е. это не верно:

C++
1
char buffer[];
Ну а еще я вместо вашей strcpy, поставил strcpy_s (У меня компиль ругается на strcpy, мол не безопасна она)
Вот рабочий код:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <string.h>
 
 
using namespace std;
 
class class_A {
public:
    class_A();
    char buffer[200];
};
 
class_A::class_A()
{
    char strA[] = "asd";
    strcpy_s(buffer, sizeof(buffer), strA);
 
    cout << buffer;
 
}
 
class class_B {
public:
    char *strB;
    class_B() {
        class_A a;
        strB = new char[sizeof(a.buffer)];
        strcpy_s(strB, sizeof(a.buffer), a.buffer);
        std::cout << "\nclass B " << strB << '\n';
    }
    ~class_B() {
        delete[] strB;
    }
};
 
int main() {
    class_B b;
    //   std::cout << b.strB << '\n';
    return 0;
}
1
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
17.06.2016, 18:00 #20
Цитата Сообщение от Terrr Посмотреть сообщение
Дак а что вам тогда мешает просто взять и в конструкторе класса B создать обьект класса A и забрать от туда строку?
А что мешает вообще не использовать классы в таком случае? A должен быть внешним, если это "класс-константа", то в нём нет смысла. Также как нет смысла в полях из секции public - это ничем не отличается от структур.
0
Terrr
5 / 5 / 1
Регистрация: 28.04.2015
Сообщений: 16
Завершенные тесты: 3
17.06.2016, 18:04 #21
Цитата Сообщение от nmcf Посмотреть сообщение
А что мешает вообще не использовать классы в таком случае?
Тут не в классах дело, тут дело в неправильной архитектуре.
Вопрос темы в том как передать переменную или массив из класса в класс, и я на него ответил.
0
nmcf
17.06.2016, 18:06
  #22

Не по теме:

Terrr, так ты и предложил придерживаться неправильной архитектуры.

0
Terrr
5 / 5 / 1
Регистрация: 28.04.2015
Сообщений: 16
Завершенные тесты: 3
17.06.2016, 18:09 #23
Цитата Сообщение от nmcf Посмотреть сообщение
Terrr, так ты и предложил придерживаться неправильной архитектуры.
Я даже не читал всего кода, я прочитал лишь
Цитата Сообщение от Ирина197708 Посмотреть сообщение
Добрый день, следующая задача передать переменную из класса А в класс В
и помог эту задачу решить.
0
Ирина197708
10 / 10 / 1
Регистрация: 06.08.2011
Сообщений: 139
19.06.2016, 14:09  [ТС] #24
Цитата Сообщение от Terrr Посмотреть сообщение
Тут не в классах дело, тут дело в неправильной архитектуре.
Вопрос темы в том как передать переменную или массив из класса в класс, и я на него ответил.
Всем спасибо, особенно спасибо Terr.
Тему можно закрыть.
По поводу неправильной архитектуры, полностью согласна с Terr, но это уже будет следующий этап допилить программу...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2016, 14:09
Привет! Вот еще темы с ответами:

Класс А не принимает член-переменную с типом класс Б - C++
Разработка ведётся в Visual Studio 2010 с использованием MFC Есть некий класс AnswersStatistic, header которого приведён ниже: ...

Передать переменную в массив - C++
как передать переменную с в массив?? #include &quot;stdafx.h&quot; #include &quot;iostream&quot; using namespace std; void main() { ...

Создать класс CheckerBoard (особенности строения класса - инициализация константных членов класса) - C++
Вот код: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; const int xSize = 1; const int ySize = 1; class...

Класс: как обратиться к методу производного класса через итератор на базовый класс? - C++
Есть абстрактный и два порожденных. Хочу создать например list&lt;Base*&gt; list1; затем добавляю себе в список: ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.06.2016, 14:09
Ответ Создать тему
Опции темы

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