2013-09-24 140 views
1

當我嘗試編譯以下程序時,它顯示「生成失敗。對象引用未設置爲對象的實例」。我有點新的C++,所以如果有人能幫助我,它會很好。我只是嘗試了一些我在書中看到的例子,所以我不知道這有什麼問題。未將對象引用設置爲對象的實例

using namespace std; 

class matrix 
{ 
    int m[3][3]; 

    public: 
     void read(void); 
     void display(void); 

     friend matrix trans(matrix); 
} 

void matrix :: read(void) 
{ 
    cout<<"Enter the elements of the 3x3 array matrix : \n"; 
    int i,j; 
    for(i=0;i<3;i++) 
    { 
     for(j=0;j<3;j++) 
     { 
      cout<<"m["<<i<<"]["<<j<<"] ="; 
      cin>>m[i][j]; 
     } 
    } 
} 

void matrix :: display(void) 
{ 
    int i,j; 
    for(i=0;i<3;i++) 
    { 
     cout<<"\n"; 
     for(j=0;j<3;j++) 
     { 
      cout<<m[i][j]<<"\t"; 
     } 
    } 
} 

matrix trans(matrix m1) 
{ 
    matrix m2; 
    int i,j; 
    for(i=0;i<3;i++) 
    { 
     for(j=0;j<3;j++) 
     { 
      m2.m[i][j] = m1.m[j][i]; 
     } 
    } 
    return(m2);    //returning an object 
} 

int main() 
{ 
    matrix mat1,mat2; 
    mat1.read(); 
    cout<<"\nYou entered the following matrix :"; 
    mat1.display(); 

    mat2 = trans(mat1); 
    cout<<"\nTransposed matrix :"; 
    mat2.display(); 

    getch(); 
    return 0; 
} 
+0

告訴我們源代碼行,編譯器會抱怨。 –

+1

@millimoose你找不到調試器的編譯器錯誤:-) –

+2

如果我在類聲明後添加'#include ''#include '並使用'-lncurses'編譯,這個編譯和運行沒有錯誤。 – Max

回答

0

1 - 類定義
2後插入分號 - 插入正確的頭

#include <iostream> 
    #include <conio.h> 

3 - 嘗試獲得一個編譯器,該多個描述性有點與關於誤差。我做了我提到的所有事情,並且你的程序運行了。嘗試一下

+0

非常感謝所有的答案。是的,我錯過了類聲明後的分號。但我不明白,因爲你說這個代碼在visual studio中工作正常,但是由於我之前使用過ubuntu,我使用IDE MonoDevelop來編譯程序。在修復這些bug之後,它仍然在monoDevelop中給出相同的錯誤,但在Visual Studio中工作正常。任何人都知道爲什麼會發生這種情況? 如果你可以推薦一個好的IDE在ubuntu中使用來編寫C++代碼,那真的很有用。 非常感謝ya'll。 – user107928

+0

非常感謝您的答覆。我只是想到,使用終端本身編寫和編譯代碼比在ubuntu中使用IDE容易得多。這些錯誤可以很容易地被識別,因爲它們提供了有關錯誤的更好的描述。 再次感謝您的幫助。 – user107928

+0

沒有問題。我會認爲正在圍繞Visual Studio的構建方向發展。它是編碼最友好的IDE之一,所以可以解釋一下它。列表頂部對我來說是VS,但我已經使用Netbeans,它也很好,你也許可以「C Free」 – Jay

0

它編譯罰款您修復後丟失的分號(類聲明後),並添加任何#include <conio.h>(Visual Studio中)或#include <curses.h>(對於POSIX系統)爲getch()功能(這是不是一個標準功能)。

相關問題