2016-03-04 2 views
0

Я искал способ напечатать имя переменной, на котором конструктор Экземпляр в настоящее время вызывается, из конструктора:Как напечатать название объекта, используя конструктор

#include <iostream> 

struct A { 
    A() { 
     std::cout << "variable name = " /*magic here*/ << "\n"; 
    } 
}; 

int main() { 
    A abc; // should output "variable name = abc" 
    A def; // should output "variable name = def" 
} 

Возможно ли это и как?

+0

задние-тик используется для поточного кода, использовать только 4 пространство, ведущее отступ для блоков кода. – crashmstr

+2

Этот вопрос очень плохо сформулирован. Мы не знаем, что вы имеете в виду. Укажите примеры в коде, что вы имеете в виду. Мы не знаем, что вы подразумеваете под 'cout << [object]'. –

+0

возможно 'cout << this;'? –

ответ

0

Я не думаю, что это можно сделать без использования макросов.

Если у вашего класса был конструктор, содержащий const char *, то вы могли бы использовать макрос конструктора-подделки, чтобы передать имя переменной в настоящий конструктор. Я не уверен, почему вы хотите это сделать, хотя это довольно уродливое решение.

#define CONSTRUCT(type, name) type name(#name)

Смежные вопросы