2013-04-03 107 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; 
} 
相關問題