为什么在c ++程序中出错?

时间:2013-09-29 10:56:49

标签: c++ class object

我想我已经在这个程序中正确编码了一切但仍然出错。 对象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();
}

5 个答案:

答案 0 :(得分:5)

当编译器告诉您某些内容无法访问时,它会讨论public:protected: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()
    {
        ...
    }
};

答案 1 :(得分:2)

class的默认成员访问权限为privatestruct的默认值为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>

答案 2 :(得分:1)

遵循高完整性C ++编码标准指南,始终先声明 public ,然后声明受保护和私有成员。见Rule 3.1.1 of hicpp-manual-version-3-3.pdf

答案 3 :(得分:0)

所有变量&amp;你班上的职能是私人的。如果未使用private:protected:public:说明符指定访问权限,则这是默认设置。我建议你好好阅读一个教程 - 谷歌C ++课程。

也是int main()而且void main()

答案 4 :(得分:0)

问题是由访问说明符引起的。默认情况下,类方法和数据成员是私有的。使您的数据成员私有,方法公开。所以你可以使用公共方法设置私有数据成员值。

class{
private:
int a;
int b;
int c;
public:

void method();
void print_sum();

};