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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
tokar_1
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 36
#1

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

31.08.2013, 19:45. Просмотров 1504. Ответов 26
Метки нет (Все метки)

Добрый день.

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

Видимость экземпляра класса внутри класса - C++
Здравствуйте! Пытаюсь вывести openCV видео в QT виджете. На данный момент в слоте обновления картинки инициализирую класс cv::VideoCapture...

Как узнать имя экземпляра класса? - C++
у меня есть класс polynom, я создаю его экземпляры polynom a(5), b(5), c(5); как мне программно узнать имя экземпляра класса?

Создание нового экземпляра дочернего класса из экземпляра базового - C++
Всем привет! Извиняюсь, если вопрос глупый, но что-то не смог найти конкретный ответ на него... У меня есть несколько классов: все они...

При создании экземпляра класса, создается 2 экземпляра вместо 1 - C++
Подсчет экземпляров ведется с помощью статического члена num_dogs, который во всех трех конструкторах (1. по умолчанию, 2. со всеми...

Сложение экземпляра базового класса и экземпляра наследника - C++
Добрый вечер! Моя задача - сложить экземпляр базового класса и наследника. Нужно сделать так, чтобы результат сложения "знал"...

Удаление экземпляра класса в функции самого класса (Ошибка при отладке) - C++
Допустим, у нас есть класс Buffer, который хранит в себе указатель на класс некоторой матрицы и количество этих указателей refcounter ...

26
coloc
погромист
411 / 247 / 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;
}
Так?
1
Бендерродригез
Сгибальщик
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;
    };
}
Что значит имя экземпляра?
0
Kuzia domovenok
1949 / 1802 / 138
Регистрация: 25.03.2012
Сообщений: 6,245
Записей в блоге: 1
31.08.2013, 21:03 #4
а зачем тебе это понадобилось? Не припоминаю, какая может быть реальная необходимость писать имена переменных. И да, это невозможно. После компиляции все имена переменных, грубо говоря, превращаются в адреса.
0
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,187
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");
но это извращение
а зачем это надо?
0
tokar_1
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 36
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, так я уже догадался. Но ты прав, это извращение не пойдет.
0
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,187
31.08.2013, 21:16 #7
Цитата Сообщение от tokar_1 Посмотреть сообщение
Поясняю
ты вообще представляешь что такое класс /структура экземпляр/объект

в описании класса равно и структуре находятся некоторые элементы
при создании объекта выделяется память необходимая для размещения всех этих объектов
потом в дело вступает конструктор
ни о каких именах в это время программа уже не знает
они потерялись еще на этапе компиляции
0
tokar_1
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 36
31.08.2013, 21:17  [ТС] #8
Kuzia domovenok, вот именно у меня есть необходимость выводить имена объектов на экран
0
0x10
2478 / 1651 / 247
Регистрация: 24.11.2012
Сообщений: 4,089
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);
}
0
tokar_1
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 36
31.08.2013, 21:23  [ТС] #10
ValeryS, сорри я исправил, не в кострукторе надо выводить, а в методе класса
0
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,187
31.08.2013, 21:28 #11
Цитата Сообщение от tokar_1 Посмотреть сообщение
ValeryS, сорри я исправил, не в кострукторе надо выводить, а в методе класса
а никакой разницы имени уже нет
вот тебе предложил 0x10 через макрос
могу предложить другой путь
никаких внятных имен ты не увидишь но можешь увидеть адрес объекта и от него танцевать
C++
1
2
3
4
fnc()
{
std::cout << "Addr jdject"<<this << std::endl;
}
1
tokar_1
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 36
31.08.2013, 21:34  [ТС] #12
0x10, если через макрос делать, то как методы класса применять к данному объекту?

Добавлено через 2 минуты
Может как-нибудь возможно через *this в классе или через <typeinfo.h>
0
0x10
2478 / 1651 / 247
Регистрация: 24.11.2012
Сообщений: 4,089
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 секунды
Вопрос "на кой черт" все еще актуален.
1
tokar_1
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 36
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 секунды
Так впринципе меня устраивает , спасибо большое
0
Убежденный
Ушел с форума
Эксперт С++
15697 / 7207 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 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 ?
0
31.08.2013, 21:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2013, 21:42
Привет! Вот еще темы с ответами:

Явное создание экземпляра класса и явная специализация шаблона класса - C++
Всем добрый день! Не могу разобраться - эти две технологии дают один и тот же результат? В каких случаях применять одно и другое?...

Передача свойства одного экземпляра класса другому экземпляру класса - C++
#include &lt;tchar.h&gt; class A { public: A(); int aVar; }; class B : public A

Как построить экземпляр дочернего класса на основе готового экземпляра базового класса? - C++
Если уже есть готовый объект базового класса. Могу я построить экземпляр дочернего на его основе, (напр., получив такой базовый объект...

Пример класса с конструктором и деструктором, создание экземпляра класса через конструктор с параметрами - C++
Привести пример класса с конструктором и деструктором, созданием экземпляра класса с помощью конструктора с параметрами.


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

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

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