Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
40 / 40 / 6
Регистрация: 28.07.2011
Сообщений: 431
1

Использование параметра экземпляра класса из другого cpp

30.03.2014, 00:30. Показов 1473. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как использовать параметр экземпляра класса из другого cpp.
Вот у меня есть Класс
файл Character.h
C++
1
2
3
4
5
6
7
8
9
#ifndef _CHARACTER_H_
#define _CHARACTER_H_
 
class CHARACTER
{
public:
void a();
};
#endif
файл Character.cpp

C++
1
2
3
4
5
6
#include "Character.h"
 
void CHARACTER::a()
{
c = k+m;
}
Файл main.cpp
Создаю здесь экземпляр класса CHARACTER Player;
и вызываю функцию un из файла Key.cpp

C++
1
2
3
4
5
6
7
8
9
#include "Key.cpp"
#include "Character.h"
 
int main()
{
CHARACTER Player;
Player.a();
 
}
Вот теперь мне нужно из файла Key.cpp

вызвать функцию Player.a(); как это сделать?
#include "main.cpp"

C++
1
2
3
4
void an()
{
Player.a(); // ВОТ ТУТ  НЕ ВИДИТ КЛАСС Player
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2014, 00:30
Ответы с готовыми решениями:

Получить константу из экземпляра класса, который является членом другого класса
class test { const STATUS = 1; } $a = new test(); echo $a::STATUS . PHP_EOL; // работает ...

Инициализация экземпляра класса, как поле другого класса
Всем доброго времени суток ! Есть класс: class a{ public: a(int _type): type(_type) {} ...

Создание экземпляра класса внутри другого класса
Добрый вечер. Стоит задача сделать поле ввода с валидацией данных. Нужно чтобы пользователь не...

Доступ к свойствам экземпляра класса из другого класса
Здравствуйте! У меня возникла программа с написанием программы на C#. "Реализовать набор классов,...

8
90 / 90 / 48
Регистрация: 07.12.2011
Сообщений: 215
30.03.2014, 00:41 2
В key.cpp подключен заголовочный файл, с классом CHARACTER ?
C++
1
#include "Character.h"
0
542 / 163 / 79
Регистрация: 23.09.2013
Сообщений: 316
30.03.2014, 00:43 3
Здравствуйте, во-первых, Вам необходимо в файле Key.cpp подключить директивой препроцессора заголовочный файл с объявлением класса CHARACTER т.е :
C++
1
#include "Character.h"
Во-вторых, необходимо помнить, что не статические методы класса, каким и является метод:
C++
1
void a();
класса CHARACTER - нельзя вызывать без объекта - экземпляра класса.

Таким образом в единицу трансляции (файл Key.cpp) каким-то образом должен быть передан либо сам экземпляр класса - Player.a(); либо он может быть создан внутри той функции, которая вызывает метод a(); (как это у вас было в main.cpp) :

C++
1
2
CHARACTER Player;
Player.a();
0
40 / 40 / 6
Регистрация: 28.07.2011
Сообщений: 431
30.03.2014, 00:44  [ТС] 4
Но как например это сделать?
0
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
30.03.2014, 00:44 5
Цитата Сообщение от Vovik_0_1 Посмотреть сообщение
ВОТ ТУТ *НЕ ВИДИТ КЛАСС Player
Player - это не класс, а объект класса. И чтобы он был видим в какой-то функции - нужно это обеспечить, объявления переменной в main недостаточно для этого.
0
40 / 40 / 6
Регистрация: 28.07.2011
Сообщений: 431
30.03.2014, 00:47  [ТС] 6
Если сделаю глобально
C++
1
CHARACTER Player;
то выскакивают ошибки 1>main.obj : error LNK2005: "class CHARACTER Player" (?Player@@3VCHARACTER@@A) already defined in Key.obj
0
542 / 163 / 79
Регистрация: 23.09.2013
Сообщений: 316
30.03.2014, 01:06 7
Лучший ответ Сообщение было отмечено Vovik_0_1 как решение

Решение

Например такой код:
C++
1
2
3
4
5
6
7
8
9
10
#include "Character.h"
 
void an() {
    CHARACTER Player; // CHARACTER - имя класса, Player - имя переменной (объекта/экземпляра класса) с типом CHARACTER
    Player.a();       // У объекта класса вызывается публичный метод
}
 
void Test(CHARACTER &player) {  // Передача в функцию изменяемого объекта класса по ссылке. 
    player.a();                 // Вызов публичного метода у объекта класса
}
Добавлено через 5 минут
error LNK2005: "class CHARACTER Player" (?Player@@3VCHARACTER@@A) already defined in Key.obj
Это ошибка линковщика ( На последнем этапе скомпилированные отдельно единицы трансляции (cpp файлы) - преобразуются в объектные файлы - которые между собой связывает линковщик) В данном случае, если я не ошибаюсь, линковщик говорит о том, что класс CHARACTER уже определен в Key.obj - для того чтобы точно сказать какая из ошибок присутствует - нужно увидеть Ваш код полностью. Скорее всего ошибка в том где конкретно и как вы попытались
сделаю глобально
1
8 / 8 / 3
Регистрация: 30.04.2013
Сообщений: 25
30.03.2014, 01:10 8
Melg, ТС исходный код через #include подключает, в этом ошибка.
1
40 / 40 / 6
Регистрация: 28.07.2011
Сообщений: 431
30.03.2014, 01:21  [ТС] 9
Всем спасибо! Разобрался!
0
30.03.2014, 01:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2014, 01:21
Помогаю со студенческими работами здесь

Классы, передача экземпляра класса в качестве параметра
Есть три класса: Фильм, Зал, Сессия. Сущность: Кинотеатр. У класса Фильм множество полей типа:...

Использование экземпляра класса XmlNode
Какой синтаксис для этой штуки? public ref class XmlDocument : XmlNode peremennaya; - жалуется,...

Использование одного экземпляра класса
Добрый день! Помогите, никак не могу накопать нужную информацию. Как использовать один и тот же...

Использование одного экземпляра класса
Всем добрый день! Вот хоть убей, не могу понять как! Суть такая. Есть игра, в игре 4 класса, а...


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

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