我想我已经在这个程序中正确编码了一切但仍然出错。
对象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();
}
答案 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
的默认成员访问权限为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>
。
答案 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();
};