关于#c++#的问题:c2679

这个错误怎么改掉呀

#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");
}

img

第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");
}
 

img

这篇博客可以解决你的问题:

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你看下这篇博客吧, 应该有用👉 :《C++调试》c2679问题的解决办法
  • 除此之外, 这篇博客: C++ 错误分类:(编译错误 逻辑错误 运行时错误)中的 [2]函数名与变量名称冲突:C2365 (C2064) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    特殊情况:静态类型检查可能得到 C2064:因为解析指针(函数符号)的时候,使用了与之同名的类成员变量名

    class Demo
    {
    	public:
    		char var0;
    	public:
    		bool var0()
    		{...}
    };
    
    int main()
    {
    	Dem0 demo;
    	std::cout<<demo.var0()<<std::endl;
    	//产生C2064,因为var0命名冲突
    	//如果Demo类中var0还是private成员变量,还会产生访问权限冲突
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^