C++ 有人能告诉我这个c+有什么问题吗+;代码 #包括 使用名称空间std; 阶级情结{ 私人: INTA,b; 公众: 无效集合_数据(整数x,整数y){ a=x,b=y; } void show_data(){ cout

C++ 有人能告诉我这个c+有什么问题吗+;代码 #包括 使用名称空间std; 阶级情结{ 私人: INTA,b; 公众: 无效集合_数据(整数x,整数y){ a=x,b=y; } void show_data(){ cout,c++,C++,“a”和“b”被声明为私有。您不能从类外访问它。您需要将其公开或提供getter,或将其移动到类内 由于类变量“a”和“b”是私有的,因此需要为它们编写getter函数。示例代码如下: #包括 使用名称空间std; 阶级情结{ 私人: INTA,b; 公众: 无效集合_数据(整数x,整数y){ a=x,b=y; } void show_data(){ cout正如其他人指出的,成员变量“a”和“b”是私有的,因此不能从类外访问。另外,请注意,“add”函数在数学上可能不正确。如果要添加两个复数,

“a”和“b”被声明为私有。您不能从类外访问它。您需要将其公开或提供getter,或将其移动到类内

  • 由于类变量“a”和“b”是私有的,因此需要为它们编写getter函数。示例代码如下:
  • #包括
    使用名称空间std;
    阶级情结{
    私人:
    INTA,b;
    公众:
    无效集合_数据(整数x,整数y){
    a=x,b=y;
    }
    void show_data(){
    
    cout正如其他人指出的,成员变量“a”和“b”是私有的,因此不能从类外访问。另外,请注意,“add”函数在数学上可能不正确。如果要添加两个复数,您可能需要编写:

    INTA=c.a+d.a

    INTB=c.b+d.b


    我假设“a”是实部,“b”是虚部,所以这里有很多要讨论的内容,这有点难,因为很难知道你可以使用什么。至少我已经尝试从我的课程中删除这个概念

    您的类缺少任何构造函数。仅依赖setter是不好的做法。构造函数是初始化对象的正确方法,并且比默认的initialization+setter更有效

    你过度使用逗号运算符并没有真正的好处,它只是混淆了可读性

    您的
    add()
    函数试图访问私有数据,这是一个很大的禁忌。如果任何自由函数都能随心所欲地访问私有数据,这将无法达到目的。在类内实现该函数效果良好的原因是,作为类成员函数,它可以访问私有部分。将其设为类成员函数或添加获取你的数据

    下面的示例添加了构造函数,在合适的地方用运算符重载替换函数,并进行了一些其他“更好”的实践更改

    当我帮助解决像这样的家庭作业问题时,我倾向于使用一些可能尚未讨论过的东西;这有助于防止复制/粘贴不诚实。但我相信这仍然有助于看到逻辑的发展

    #包括
    #包括
    #包括
    阶级情结{
    公众:
    Complex()=默认值;
    复数(intr,inti):m_实(r),m_虚(i){
    自动获取数据()常量{return std::make_tuple(m_real,m_virtual);}
    无效集合_数据(整数x,整数y){
    m_real=x;
    m_=y;
    }
    私人:
    int m_real=0;
    int m_=0;
    };
    复数运算符+(常数复数和lhs、常数复数和rhs){
    auto[leftReal,leftvirtual]=lhs.get_data();//C++17功能
    auto[rightReal,RightImaginated]=rhs.get_data();
    返回复数(左实+右实,左虚+右虚);
    }
    //这里不打印换行符,因为没有其他标准类型这样做
    STD::OsFase&操作人员调用“代码”> C1(添加代码(C2)< /代码>)是不可能的。在编写代码的时候,代码的错误比当前的(给本文的)答案要多一些。可能是因为您从仍然喜欢C++的人那里得到内容。
    
    #include <iostream>
    using namespace std;
    
    class Complex{
        private:
            int a,b;
        public:
            void set_data(int x,int y){
                a=x,b=y;
            }
            void show_data(){
                cout<<a<<" "<<b<<endl;
            }
    };
       
    Complex add(Complex c, Complex d){
        Complex temp;
        int a = c.a+c.b;
        int b = d.a+d.b;
        temp.set_data(a,b);
        return temp;
    };
    
    int main()
    {
        Complex c1,c2,c3;
        c1.set_data(2,3);
        c2.set_data(4,5);
       c3 = add(c1,c2);
       c3.show_data();
       return 0;
    }
    
    #include <iostream>
    using namespace std;
    class Complex{
        private:
            int a,b;
        public:
            void set_data(int x,int y){
                a=x,b=y;
            }
            void show_data(){
                cout<<a<<" "<<b<<endl;
            }
            int getA(){
                return a;
            }
            int getB(){
                return b;
            }
    };
       
    Complex add(Complex c, Complex d){
        Complex temp;
        int a = c.getA()+c.getB();
        int b = d.getA()+d.getB();
        temp.set_data(a,b);
        return temp;
    }
    
    int main()
    {
        Complex c1,c2,c3;
        c1.set_data(2,3);
        c2.set_data(4,5);
        c3 = add(c1,c2);
        c3.show_data();
        return 0;
    }
    
    #include <iostream>
    using namespace std;
    class Complex{
        public:
            int a,b;
        public:
            void set_data(int x,int y){
                a=x,b=y;
            }
            void show_data(){
                cout<<a<<" "<<b<<endl;
            }
    };
       
    Complex add(Complex c, Complex d){
        Complex temp;
        int a = c.a+c.b;
        int b = d.a+d.b;
        temp.set_data(a,b);
        return temp;
    };
    
    int main()
    {
        Complex c1,c2,c3;
        c1.set_data(2,3);
        c2.set_data(4,5);
       c3 = add(c1,c2);
       c3.show_data();
       return 0;
    }