这个错误怎么改掉呀
#include<iostream>
using namespace std;
#include<string>
class Phone
{
public:
Phone(string pName)
{
cout << "phone的构造函数" << endl;
m_PName = pName;
}
~Phone()
{
cout << "phone的析构函数" << endl;
}
string m_PName;
};
class Person
{
public:
Person(string name, string pname): m_Name(name),m_Phone(pname)
{
cout << "person的构造函数" << endl;
}
~Person()
{
cout << "person的析构函数" << endl;
}
string m_Name;
Phone m_Phone;
};
void test01()
{
Person p("张三","苹果");
cout << p.m_Name<<"使用的手机是" << p.m_Phone << endl;
}
int main()
{
test01();
system("pause");
}
第40行的p.m_Phone 后面加个.m_PName就可以了,即访问Person对象p的m_Phone成员变量的m_PName属性。
修改如下:
参考链接:
#include<iostream>
using namespace std;
#include<string>
class Phone
{
public:
Phone(string pName)
{
cout << "phone的构造函数" << endl;
m_PName = pName;
}
~Phone()
{
cout << "phone的析构函数" << endl;
}
string m_PName;
};
class Person
{
public:
Person(string name, string pname): m_Name(name),m_Phone(pname)
{
cout << "person的构造函数" << endl;
}
~Person()
{
cout << "person的析构函数" << endl;
}
string m_Name;
Phone m_Phone;
};
void test01()
{
Person p("张三","苹果");
// http://c.biancheng.net/view/2223.html
// p.m_Phone.m_PName访问 Person对象p的成员变量m_Phone的m_PName属性
cout << p.m_Name<<"使用的手机是" << p.m_Phone.m_PName << endl;
}
int main()
{
test01();
system("pause");
}
特殊情况:静态类型检查可能得到 C2064:因为解析指针(函数符号)的时候,使用了与之同名的类成员变量名
class Demo
{
public:
char var0;
public:
bool var0()
{...}
};
int main()
{
Dem0 demo;
std::cout<<demo.var0()<<std::endl;
//产生C2064,因为var0命名冲突
//如果Demo类中var0还是private成员变量,还会产生访问权限冲突
}