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

Имя экземпляра объекта внутри класса на С++ - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
tokar_1
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 34
31.08.2013, 19:45     Имя экземпляра объекта внутри класса на С++ #1
Добрый день.

Подскажите, пожалуйста, как узнать имя экземпляра объекта внутри класса на С++ ?
В частности, мне надо имя экземпляра объекта печатать на экран.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2013, 19:45     Имя экземпляра объекта внутри класса на С++
Посмотрите здесь:

C++ Как узнать имя экземпляра класса?
C++ Сложение экземпляра базового класса и экземпляра наследника
C++ Как построить экземпляр дочернего класса на основе готового экземпляра базового класса?
Явное создание экземпляра класса и явная специализация шаблона класса C++
C++ Создание нового экземпляра дочернего класса из экземпляра базового
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
31.08.2013, 19:52     Имя экземпляра объекта внутри класса на С++ #2
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
#define print( i ) std::cout << #i;
 
int main() {
    print( std::cout );
    return 0;
}
Так?
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
31.08.2013, 19:54     Имя экземпляра объекта внутри класса на С++ #3
C++
1
2
3
4
5
6
7
class imennoj{
    string name;
public:
    imennoj(string str){
        name = str;
    };
}
Что значит имя экземпляра?
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
31.08.2013, 21:03     Имя экземпляра объекта внутри класса на С++ #4
а зачем тебе это понадобилось? Не припоминаю, какая может быть реальная необходимость писать имена переменных. И да, это невозможно. После компиляции все имена переменных, грубо говоря, превращаются в адреса.
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,044
31.08.2013, 21:11     Имя экземпляра объекта внутри класса на С++ #5
Цитата Сообщение от tokar_1 Посмотреть сообщение
Подскажите, пожалуйста, как узнать имя экземпляра объекта внутри класса на С++ ?
ну если ты будешь их хранить внутри класса
и вызывать как нибудь так
C++
1
2
3
4
5
6
7
class A
{
.........
string name;
A(string nm){name=nm;};
}
A B("B");
но это извращение
а зачем это надо?
tokar_1
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 34
31.08.2013, 21:15  [ТС]     Имя экземпляра объекта внутри класса на С++ #6
coloc, не так
Бендерродригез, не так

Поясняю
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
class T {
private:
...................
public: 
..................
   void display(){
     cout<<   ;   //здесь нужно вывести имя экземпляра объекта, т.е. а 
   }    
}
int main(){
   T a ;
 
return 0 ;
}
Добавлено через 3 минуты
ValeryS, так я уже догадался. Но ты прав, это извращение не пойдет.
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,044
31.08.2013, 21:16     Имя экземпляра объекта внутри класса на С++ #7
Цитата Сообщение от tokar_1 Посмотреть сообщение
Поясняю
ты вообще представляешь что такое класс /структура экземпляр/объект

в описании класса равно и структуре находятся некоторые элементы
при создании объекта выделяется память необходимая для размещения всех этих объектов
потом в дело вступает конструктор
ни о каких именах в это время программа уже не знает
они потерялись еще на этапе компиляции
tokar_1
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 34
31.08.2013, 21:17  [ТС]     Имя экземпляра объекта внутри класса на С++ #8
Kuzia domovenok, вот именно у меня есть необходимость выводить имена объектов на экран
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
31.08.2013, 21:21     Имя экземпляра объекта внутри класса на С++ #9
Цитата Сообщение от tokar_1 Посмотреть сообщение
вот именно у меня есть необходимость выводить имена объектов на экран
Странная потребность. Серьезно: зачем? Я бы даже спросил: нафига?

Как объединение того, что уже предлагали выше:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
#define VAR(x) x(#x)
 
struct MyStruct
{
    MyStruct(const std::string& name)
    {
        std::cout << name << std::endl;
    }
};
 
int main()
{
    MyStruct VAR(a), VAR(b), VAR(c);
}
tokar_1
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 34
31.08.2013, 21:23  [ТС]     Имя экземпляра объекта внутри класса на С++ #10
ValeryS, сорри я исправил, не в кострукторе надо выводить, а в методе класса
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,044
31.08.2013, 21:28     Имя экземпляра объекта внутри класса на С++ #11
Цитата Сообщение от tokar_1 Посмотреть сообщение
ValeryS, сорри я исправил, не в кострукторе надо выводить, а в методе класса
а никакой разницы имени уже нет
вот тебе предложил 0x10 через макрос
могу предложить другой путь
никаких внятных имен ты не увидишь но можешь увидеть адрес объекта и от него танцевать
C++
1
2
3
4
fnc()
{
std::cout << "Addr jdject"<<this << std::endl;
}
tokar_1
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 34
31.08.2013, 21:34  [ТС]     Имя экземпляра объекта внутри класса на С++ #12
0x10, если через макрос делать, то как методы класса применять к данному объекту?

Добавлено через 2 минуты
Может как-нибудь возможно через *this в классе или через <typeinfo.h>
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
31.08.2013, 21:35     Имя экземпляра объекта внутри класса на С++ #13
tokar_1, эм?
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
#include <iostream>
 
#define VAR(x) x(#x)
 
struct MyStruct
{
    MyStruct(const std::string& name):
        name_{name}
    { }
    
    void f()
    {
        std::cout << name_ << std::endl;
    }
    
    std::string name_;
};
 
int main()
{
    MyStruct VAR(a), VAR(b), VAR(c);
    a.f();
    b.f();
    c.f();
}
Добавлено через 23 секунды
Вопрос "на кой черт" все еще актуален.
tokar_1
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 34
31.08.2013, 21:42  [ТС]     Имя экземпляра объекта внутри класса на С++ #14
0x10,
Цитата Сообщение от 0x10 Посмотреть сообщение
Вопрос "на кой черт" все еще актуален.
необходимо выводить имена объектов на экран

Добавлено через 3 минуты
Цитата Сообщение от 0x10 Посмотреть сообщение
tokar_1, эм?
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
#include <iostream>
 
#define VAR(x) x(#x)
 
struct MyStruct
{
    MyStruct(const std::string& name):
        name_{name}
    { }
    
    void f()
    {
        std::cout << name_ << std::endl;
    }
    
    std::string name_;
};
 
int main()
{
    MyStruct VAR(a), VAR(b), VAR(c);
    a.f();
    b.f();
    c.f();
}
Добавлено через 23 секунды
Так впринципе меня устраивает , спасибо большое
Убежденный
Системный программист
 Аватар для Убежденный
14191 / 6206 / 985
Регистрация: 02.05.2013
Сообщений: 10,339
Завершенные тесты: 1
31.08.2013, 21:42     Имя экземпляра объекта внутри класса на С++ #15
C++
1
2
3
4
5
6
7
size_t const Size = 100;
int Array[Size];
 
for (int i = 0; i < Size; ++i)
{
    Array[i] = i;
}
Слабо вывести имена int-ов из массива Array ?
tokar_1
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 34
31.08.2013, 21:43  [ТС]     Имя экземпляра объекта внутри класса на С++ #16
Все же если кто знает как реализовать через *this в классе или через <typeinfo.h>, то пишите
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,044
31.08.2013, 21:57     Имя экземпляра объекта внутри класса на С++ #17
Цитата Сообщение от tokar_1 Посмотреть сообщение
Все же если кто знает как реализовать через *this в классе
никак
this это адрес в памяти где лежит твой объект
никаких имен в памяти нет
откомпилируй любую программу и посмотри дизасемблером, имен не увидишь
и ты так и не ответил зачем выводить на экран?
отладочная информация?
лабораторная работа?
на кой черт пользователю видеть имена переменных?
это примерно тоже самое как вывести имена регистров в которые записываются значения
может твоя задача решается по другому объясни зачем выводить на экран?
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
31.08.2013, 22:54     Имя экземпляра объекта внутри класса на С++ #18
Цитата Сообщение от tokar_1 Посмотреть сообщение
Все же если кто знает как реализовать через *this в классе или через <typeinfo.h>, то пишите
Можно узнать имя класса, но не имя объекта.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
31.08.2013, 23:10     Имя экземпляра объекта внутри класса на С++ #19
После компиляции никаких "имен объектов" уже нет, даже в языками с интроспекцией типа C# и Java имена не имеют значения и узнать их на этапе исполнения нельзя.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2013, 02:02     Имя экземпляра объекта внутри класса на С++
Еще ссылки по теме:

C++ Пример класса с конструктором и деструктором, создание экземпляра класса через конструктор с параметрами
Передача свойства одного экземпляра класса другому экземпляру класса C++
C++ Видимость экземпляра класса внутри класса

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

Или воспользуйтесь поиском по форуму:
tokar_1
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 34
01.09.2013, 02:02  [ТС]     Имя экземпляра объекта внутри класса на С++ #20
Цитата Сообщение от ValeryS Посмотреть сообщение
и ты так и не ответил зачем выводить на экран?
отладочная информация?
лабораторная работа?
на кой черт пользователю видеть имена переменных?
Хотел в программе выводить имена объектов, к объекту привязаны различные методы, их значения тоже отображаю на экране. Не хотелось бы руками вбивать через cout<<" имя_объекта ".
Само отображения имен объектов - это у меня просто информация.
Yandex
Объявления
01.09.2013, 02:02     Имя экземпляра объекта внутри класса на С++
Ответ Создать тему
Опции темы

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