Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未设置对象实例的C++对象引用_C++_Visual C++_Object - Fatal编程技术网

未设置对象实例的C++对象引用

未设置对象实例的C++对象引用,c++,visual-c++,object,C++,Visual C++,Object,当我试图编译下面的程序时,它说构建失败了。对象引用未设置为对象的实例。我有点新的C++,所以如果有人能帮我的话,那就太棒了。我只是在尝试我在一本书中看到的一些例子,所以我不知道这有什么问题 using namespace std; class matrix { int m[3][3]; public: void read(void); void display(void); friend matrix trans(matrix

当我试图编译下面的程序时,它说构建失败了。对象引用未设置为对象的实例。我有点新的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;
}

在类声明后修复缺少的分号,并为非标准函数的getch函数添加include Visual Studio或include for POSIX系统后,它可以正常编译。

1-在类定义后插入分号 2-插入正确的标题

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

3-尝试使用一个对错误更具描述性的编译器。我做了我提到的所有事情,你的程序运行了。试试它

告诉我们编译器抱怨的源代码行。@millimoose你用调试器找不到编译器错误:-如果我在类声明后添加include和include分号,并用-lncurses编译,那么编译和运行时不会出错。@TorstenRobitzki Derp。我被提示NPE的消息抛出。非常感谢所有的答案。是的,我错过了班级声明后的分号。但是我不明白你所说的,这段代码在VisualStudio中工作得很好,但是因为我之前使用的是ubuntu,所以我使用IDE MonoDevelop来编译程序。在修复了这些bug之后,monoDevelop仍然会出现同样的错误,但在VisualStudio中效果良好。有人知道为什么会这样吗?顺便说一下,如果你能推荐一个好的IDE来使用Ubuntu来编写C++代码,那将非常有帮助。非常感谢。非常感谢你的回答。我刚刚发现,使用终端本身编写和编译代码要比在ubuntu中使用IDE容易得多。由于这些错误提供了更好的错误描述,因此可以很容易地识别这些错误。再次感谢您的帮助。没问题。我想这是围绕着VisualStudio是如何构建的。这是一个对编码人员最友好的IDE,所以让我们来解释一下。对我来说,排在第一位的是VS,但我使用了Netbeans,它也很好用,你也许可以免费使用C