我想将对象名称保存为字符串。我可以解释几行代码。
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
class Example
{
public:
string object_name;
//code...
};
int main()
{
Example object;
cout<<object.object_name<<endl; //In this case the output should be "object", how to achieve this ?
return 0;
}
答案 0 :(得分:3)
无法从内部对象访问变量名称,因为它仅存在于源代码级别。你可以做的最好的事情是,为构造函数提供对象的名称:Example object("object")
,你甚至可以将它包装在宏中以避免重复:
#define CREATE_OBJECT(TYPE, NAME) TYPE NAME( #NAME )
CREATE_OBJECT(Example, object);
您应该根据复制/移动对象进行操作,因为它会保留可能与复制名称无关的名称。您将删除复制/移动构造函数,大大降低对象的有用性,并定义新的构造函数,这些构造函数接受现有对象和新名称并为其创建COPY_OBJECT
宏。
即便如此,引用也存在问题......
TL; DR:它通常不值得。
答案 1 :(得分:0)
要在C ++中获得此功能,您必须自己设置foreach ($currentJobsXML->Jobs->Job as $job) {
//$seconditerator = 0;
foreach($jobsQuoteXML->Quotes->Quote as $quote) {
if((string)$quote->State == 'Accepted') {
if ((string)$job->Name == (string)$quote->Name) {
//$finalArray[$iterator]['TEST'][$seconditerator] = array(
$finalArray[$iterator]['TEST'][] = array(
'Job ID' => (string)$job->ID,
'Project Name' => (string)$job->Name,
'Client' => (string)$job->Client->Name,
'Quote Exc VAT' => (string)$quote->Amount,
'VAT Amount' => (string)$quote->AmountTax,
'Total Amount' => (string)$quote->AmountIncludingTax
);
//$seconditerator++;
}
}
}
$iterator++;
}
,并且无需为object_name
实例及其Example
数据冗余指定它,这是唯一的方法member是使用宏来存储“stringified”标识符:
object_name
那是非常丑陋的恕我直言:人们会把它误认为是运行时函数调用。