2013-04-03 52 views
1

如果我要创建一个类并将多个函数放入私有部分,我该如何从同一个类的公共部分调用函数? 例子:C++:从该类的公共部分调用私有函数

class calculator{ 
public: //What would go here 

private: 
    float calculate(float x, char y, float z){ 
     float answer; 

     switch (y){ 

      case '+': 
      answer = x + z; 
      break; 

      case '-': 
      answer = x - z; 
      break; 

      case '/': 
      answer = x/z; 
      break; 

      case '*': 
      answer = x * z; 
      break; 

      default: 
      return(0); 
     } 
     cout <<"= "; return answer; 
    } 

    void main(){ 
     float num1; 
     float num2; 
     char aOp; 
     system("CLS"); 
     cout << ">> "; cin >> num1 >> aOp >> num2; 
     cout << calculate(num1, aOp, num2) << endl << endl; 
    } 
}; 
+1

你的'void(!)main()'是你的类的'private'成员函数(!)? – us2012

+0

main可以是无效类型 – 4pie0

+4

@ cf16如果它是符合标准的'main'函数,则不会。 – juanchopanza

回答

7

你只需要调用私有成员函数从公立:

class Foo 
{ 
public: 
    void foo() { privateFoo(); } 
private: 
    void privateFoo(); 

}; 
3

正常,你现在要做的。你在同一个班级,所以你有权访问私人方法。 只是使主要公众。还要注意,main对于一个成员函数来说不是一个好名字。 main通常保留给程序的入口点,不能在一个类中。

1

如果你想调用私有声明的函数,并且你想从任何地方调用它,你必须调用public部分的函数(或者为继承类保护),并且必须调用它这个私人功能。

0

好的。记住一件事。 专用函数只能在另一个属于同一类的成员函数的帮助下调用。使用点operator.See这个例子中,即使一个对象不能调用私有函数:

#include<iostream> 
using namespace std; 
class student 
{ 
private: 
int m; 
void read void //Private function of the class. 
public: 
void update(void); 
void write(void); 
}; 

如果s1是类学生的一个对象,然后,我们就无法写出这 -

s1.read(); //it won't work: object can not access private members. 

但我们知道我们可以调用read()函数与同一类的其他功能的帮助,所以我们可以用更新()功能或写()函数的帮助下调用它。 所以我们在update()函数的帮助下调用read()函数来更新m的值。

void student :: update(void) 
{ 
read(); ///simple call ; no object used 
} 

所以,这里是你如何调用私人成员函数。 最后,这里是完整的程序,它通过update()和read()函数来更新m的值。 -

#include<iostream> 
using namespace std; 
class student 
{ 
int m; 
void read() 
{ 
m=5; 
cout<<m; 
} 
public: 
void update(); 
void write(); 

}; 
void student :: update() 
{ 
    read(); 
} 
int main() 
{ 
student s1; 
s1.update(); 
return 0; 
} 
相关问题