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