2013-09-29 43 views
3

我想我已經在這個程序中正確編碼了一切,但仍然出現錯誤。 對象si它說它不可訪問。爲什麼在C++程序中出錯?

#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

標題和解釋不是很好。請下次至少在標題中說明您的問題。 –

回答

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>

+0

爲什麼大家都說使用'iostream'而不是'iostream.h'?我同意'iostream.h'不是一個標準頭文件,但隨着這樣說,編譯器的變化也需要指出,如果OP使用像Turbo C++這樣的十年前的編譯器,並且簡單地改變這個頭文件,將會引發編譯器錯誤。 – P0W

+0

@ P0W我們在這裏討論標準C++。如果一個問題涉及到標準前編譯器,那麼應​​該由OP來指出這個需求。無論如何,我已經完成了最後一句話。 – juanchopanza

+0

好吧,現在看起來不錯,謝謝+1 – P0W

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() 
    { 
     ... 
    } 
}; 
0

所有的變量&在您的類函數是私有的。當未指定private:protected:public:說明符時,這是默認設置。我建議你有一個很好的閱讀教程 - 谷歌C + +類。

也實在是int main()永不void main()

0

的問題是由於訪問說明。默認情況下,類方法和數據成員是私有的。讓你的數據成員變得私人化並且公開方法所以你可以使用公共方法設置私有數據成員的值。

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

void method(); 
void print_sum(); 

}; 
1

高完整性C++編碼標準準則,總是先申報公共,然後protected和private成員。見Rule 3.1.1 of hicpp-manual-version-3-3.pdf

+0

大約4天后,你回答了這個問題,HIC++ V4.0上傳到http://www.codingstandard.com/section/index/。規則完全重寫,主要涵蓋自2011年以來的C++語言功能。碰巧,關於班級成員的無障礙順序已經不再是一個規則。 –

相關問題