为什么在C ++程序中出现错误

why getting errors in c++ program?

本文关键字:错误 程序 为什么      更新时间:2023-10-16

我想我已经在这个程序中正确编码了所有内容,但仍然收到错误。对象si它说它不可访问。

#include<conio.h>
#include<iostream.h>
class s_interest
{
    int p,t;
    float r;
    s_interest(int a, int b, float c)
    {
        p=a;
        r=b;
        t=c;
    }
    void method()
    {
        int result=(float)(p*t*r)/100;
        cout<<"Simple interest:"<<result;
    }
};
void main()
{
    int pr,ti;
    float ra;
    cout<<"n Enter the principle, rate of interest and time to calculate Simple Interest:";
    cin>>pr>>ti>>ra;
    s_interest si(pr,ti,ra);
    si.method();
}

当编译器告诉你某些东西不可访问时,它谈论的是public:protected: vs. private:访问控制。默认情况下,类的所有成员都是private:的,因此您无法从main()访问其中任何一个成员,包括构造函数和方法。

若要使构造函数public,请将public:节添加到类中,并将构造函数和方法放在那里:

class s_interest
{
    int p,t;
    float r;
public: // <<== Add this
    s_interest(int a, int b, float c)
    {
        ...
    }
    void method()
    {
        ...
    }
};

class的默认成员访问权限为 private(而struct的默认值为 public )。您需要制作构造函数并method() public

class s_interest
{
  int p,t;  // private
  float r;  // also private

public: // everything that follows has public access
  s_interest(int a, int b, float c) { .... }
  void method() { ....}
};

另请注意,void main()不是标准C++。返回类型需要int,所以你需要

int main()
{
  ...
}

最后,iostream.h不是标准的C++标头。如果您使用的是符合标准的C++实现,则需要包含<iostream>

遵循高完整性C++编码标准准则,始终首先声明公共成员,然后声明受保护和私有成员。请参阅 hicpp-manual-version-3-3.pdf

>

类中的所有变量和函数都是私有的。当未使用 private:protected:public: 说明符指定访问权限时,这是默认值。我建议你好好阅读一个教程 - 谷歌C++类。

而且它int main(),永远不会void main()

问题是由于访问说明符造成的。默认情况下,类方法和数据成员是私有的。将数据成员设为私有,并将方法设为公开。因此,您可以使用公共方法设置私有数据成员值。

class{
private:
int a;
int b;
int c;
public:
void method();
void print_sum();
};