Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对象的名称C++;_C++_Object_Constructor - Fatal编程技术网

C++ 对象的名称C++;

C++ 对象的名称C++;,c++,object,constructor,C++,Object,Constructor,有没有办法让对象的构造函数知道它的名称 我希望构造函数根据对象的实际名称创建字符串myObject.name。可能吗 myClass Example; //constructor creates an object with this name and i would like to have Example.name=="Example"; 谢谢你的帮助 不能保证它实际上有任何类型的源名称,因此这种机制没有意义。此外,将用户显示与源代码的内部实现细节联系起来是一个非常糟糕的想法 当然,您可以

有没有办法让对象的构造函数知道它的名称

我希望构造函数根据对象的实际名称创建字符串myObject.name。可能吗

myClass Example;
//constructor creates an object with this name and i would like to have Example.name=="Example";

谢谢你的帮助

不能保证它实际上有任何类型的源名称,因此这种机制没有意义。此外,将用户显示与源代码的内部实现细节联系起来是一个非常糟糕的想法


当然,您可以为它指定您喜欢的任何名称,您认为该名称具有您喜欢的任何含义。

无法保证它实际上具有任何类型的源名称,因此这种机制没有意义。此外,将用户显示与源代码的内部实现细节联系起来是一个非常糟糕的想法


当然,您可以为它指定您喜欢的任何名称,您认为该名称具有您喜欢的任何含义。

没有这种内置功能。 虽然你可以为自己构建一个,但以下是实现它的唯一方法

    class myClass {
       std::string m_objectName;
    public:
       myClass(std::string name):m_objectName(name);
       std::string name()
       {
           return m_objectName;
       }
    };
现在创建如下对象:

myClass Example("Example");

没有这样的内置功能。 虽然你可以为自己构建一个,但以下是实现它的唯一方法

    class myClass {
       std::string m_objectName;
    public:
       myClass(std::string name):m_objectName(name);
       std::string name()
       {
           return m_objectName;
       }
    };
现在创建如下对象:

myClass Example("Example");

不是很有用,但使用宏可以实现以下目标:

#define CREATE( a, b ) a b(b)

int main()
{
   CREATE( myClass, example );
}
当然,假设
myClass
有一个以字符串作为参数的构造函数


总而言之,我同意另一个答案,这样做真的没有意义。

不是很有用,但使用宏可以实现以下目标:

#define CREATE( a, b ) a b(b)

int main()
{
   CREATE( myClass, example );
}
当然,假设
myClass
有一个以字符串作为参数的构造函数


从根本上说,我同意另一个答案,没有什么意义。

在标准C++中没有办法做到这一点。要求这样做通常是设计问题的一个迹象。解释一下你的最终目标是什么,也许有人会给你一个很好的方法来实现它。(好吧,你可以使用一些可怕的宏技巧。但是……那太难看了。)我需要这个变量来向用户显示它的值,但是如果没有简单的方法,我只需要手动键入它,它也可以工作。感谢您需要的是
std::map
或其变体。对象没有名称。变量有名称。并非所有对象都与变量连接。在任何情况下都不能自动完成。您需要向构造函数添加类型字符串的参数,并显式传递您选择的字符串。在标准C++中没有办法这样做。要求这样做通常是设计问题的一个迹象。解释一下你的最终目标是什么,也许有人会给你一个很好的方法来实现它。(好吧,你可以使用一些可怕的宏技巧。但是……那太难看了。)我需要这个变量来向用户显示它的值,但是如果没有简单的方法,我只需要手动键入它,它也可以工作。感谢您需要的是
std::map
或其变体。对象没有名称。变量有名称。并非所有对象都与变量连接。在任何情况下都不能自动完成。您需要向构造函数添加string类型的参数,并显式传递您选择的字符串。