如何在 C++ 中的类中返回对象的字符串? [关闭]
Posted
技术标签:
【中文标题】如何在 C++ 中的类中返回对象的字符串? [关闭]【英文标题】:How can I return a String of an object in a class in c++? [closed] 【发布时间】:2017-11-01 23:13:45 【问题描述】:我想访问属于我的班级的一个字符串,但我似乎无法让它工作。 下面是示例代码:
#include<iostream>
#include<string>
#include<vector>
class element
std::string Name;
int Z;
double N;
public:
element (std::string,int,double);
double M (void) return (Z+N);
std::string NameF () return (Name);
;
element::element (std::string Name, int Z, double N)
Name=Name;
Z=Z;
N=N;
int main ()
element H ("Hydrogen",1,1.);
element O ("Oxygen",8,8);
std::vector<element> H2O =H,H,O;
std::cout<<"Mass of " <<O.NameF()<<" is: " << O.M() << std::endl;
std::cout<<H2O[1].NameF()<<std::endl;
return 0;
我无法从课堂上的对象中获取字符串... 也许我什至无法让他们进入课堂。 标准构造函数是否像字符串那样工作? 我只想要我可以调用的对象的刺痛(即名称)。 这样做的正确方法是什么?
如果有任何帮助,我将不胜感激,
干杯 尼可
【问题讨论】:
Name=Name;
将函数参数分配给自己,对成员不做任何事情。
成员变量和参数的命名冲突。 Member Initiallizer List 可以在这里为您提供帮助
或this->Name=Name
,但实际上只是更改参数或成员名称。
【参考方案1】:
对于构造函数,你应该使用一个初始化列表,其中编译器知道参数和成员之间的区别:
class element
std::string Name;
int Z;
double N;
public:
element (std::string,int,double);
double M (void) return (Z+N);
std::string NameF () return (Name);
;
element::element (std::string Name, int Z, double N)
: Name(Name), Z(Z), N(N) // <- the compiler knows which is parameter and which is member
// no need to put anything here for this
否则您可以使用this
明确区分:
void element::set_name(std::string const& Name)
// tell the compiler which is the member of `this`
// and which is the parameter
this->Name = Name;
【讨论】:
【参考方案2】:如果使用成员名作为参数名,则需要通过this
指针访问成员。
所以改变:
Name=Name;
到
this->Name = Name;
另外两个也是如此:
this->Z = Z;
this->N = N;
【讨论】:
以上是关于如何在 C++ 中的类中返回对象的字符串? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章