Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Andryushka96
1 / 1 / 0
Регистрация: 04.04.2015
Сообщений: 5
1

Создание объекта класса

16.03.2018, 05:10. Просмотров 833. Ответов 5
Метки нет (Все метки)

Как можно создать объект класса вне функции int main()?
Допустим у меня есть 4 файла
myclas.h
C++
1
2
3
4
5
6
7
8
9
10
class Humans{
private:
string name;
int age;
public:
Humans();
~Humans();
void setHum(string fName, int fAge);
void print();
}
myclas.cpp
C++
1
2
3
4
5
6
7
8
#include "myclas.h"
Humans::Humans(){
std::cout<<"Создано"<<std::endl;}
Humans::setHum(string fName, int fAge){
name = fName;
age = fAge;}
Humans::print(){
cout<<"Имя: "<<name<<"\nвозраст: "<<age<<endl;
вот тут файл в котором я хочу создать объекты
humans.cpp
C++
1
2
3
4
5
6
7
Humans *person1 = new Humans;
Humans *person2 = new Humans;
//тут функция какая-нибудь которая заполнит именами, что-то вроде
void people(){
person1.sethum("Вася", 18);
person2.setHum("Петя", 22);
}
и в start.cpp
C++
1
2
3
4
5
int main(){
people();
person1.print();
person2.print();
return 0;
Примерно так. Т.е. описать создание и заполнение объектов не в функции main, а где-нибудь в другом файле.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2018, 05:10
Ответы с готовыми решениями:

Возможно ли создание объекта шаблонного класса в функции этого класса?
Доброго времени суток, уважаемые форумчане :) Мне по лабам задали задание - реализовать шаблон...

Создание объекта класса с полем являющимся объектом другого класса
Bill a; cin&gt;&gt;a;//тут я ввел с помощью перегруженного оператора ElementSpiska c; //поля у...

Создание объекта класса в методе этого же класса
собственно вопрос. можно ли создавать объект класса в методе того же класса? насколько это...

Создание объекта класса
Здравствуйте, подскажите пожалуйста в чем разница между Test t(блаблабла); и Test *t = new...

Создание объекта класса
Есть такой класс: class CSomeClass { public: void SomeMethod(); }; И вот как можно...

5
kryakenbar
0 / 0 / 0
Регистрация: 13.03.2018
Сообщений: 4
16.03.2018, 06:00 2
а зачем это всё? какая задача у вас?
0
Andryushka96
1 / 1 / 0
Регистрация: 04.04.2015
Сообщений: 5
16.03.2018, 06:12  [ТС] 3
Цитата Сообщение от kryakenbar Посмотреть сообщение
а зачем это всё? какая задача у вас?
У меня есть класс и в нём будет много объектов. Не хочу забивать главный файл.
1
OlyaClimova
15 / 15 / 12
Регистрация: 27.02.2018
Сообщений: 44
16.03.2018, 09:25 4
я бы сказала, что объекты, с которыми вы работаете в int main, должны таки создаваться в районе main-а, а не в отдельном файле.
но если уж вы так хотите, то эти объекты можно создавать в файле .h, то бишь, в хедере. включаете в этом хедере хедер вашего класса, и создаете сколько угодно объектов, а потом включаете этот хедер в файл с main.
0
Andryushka96
1 / 1 / 0
Регистрация: 04.04.2015
Сообщений: 5
16.03.2018, 11:47  [ТС] 5
Попробовал, как-то особо не получается. Компилятор выдаёт ошибку и пишет, что объект уже переопределён.
0
Ygg
1907 / 517 / 194
Регистрация: 10.02.2018
Сообщений: 1,093
16.03.2018, 11:50 6
Лучший ответ Сообщение было отмечено Andryushka96 как решение

Решение

Для подобных вещей используется ключевое слово extern.
Кликните здесь для просмотра всего текста
MyClass.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#pragma once
 
class CMyClass
{
public:
    const char* m_name;
 
public:
    CMyClass(const char* name);
    ~CMyClass() {}
 
    void ShowName();
};
 
extern CMyClass person1;
extern CMyClass person2;
MyClass.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "MyClass.h"
#include <iostream>
 
CMyClass person1("Вася");
CMyClass person2("Петя");
 
CMyClass::CMyClass(const char* name)
{
    m_name = name;
}
 
void CMyClass::ShowName()
{
    std::cout << m_name << std::endl;
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include "MyClass.h"
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    person1.ShowName();
    person2.ShowName();
 
    getchar();
    return 0;
}
2
16.03.2018, 11:50
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2018, 11:50

Создание объекта класса
Создал свой класс с именем и фамилией, не могу создать объект этого класса, при проверке на ошибки...

Создание объекта по имени класса
Привет, собственно вопроса три: 1) Как называется тип класса (то что в шарпе наззывается Type, и...

Создание объекта класса в switch
switch (c) {case 1: man a; break; Как создать объект класса в switch? switch не хочет и...


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

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

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