C++ 我的课不好
我的代码中有一个错误,我根本不知道 这是我的密码: MyClass.h MyClass.cpp 布拉格语一次C++ 我的课不好,c++,class,object,int,C++,Class,Object,Int,我的代码中有一个错误,我根本不知道 这是我的密码: MyClass.h MyClass.cpp 布拉格语一次 class MyClass { public: MyClass(); virtual ~MyClass(); int i; protected: private: }; main.cpp 我只是得到一些随机数。这里有什么帮助吗?您没有在类中初始化i,您的构造函数应该如下所示: MyClass::MyClass()
class MyClass
{
public:
MyClass();
virtual ~MyClass();
int i;
protected:
private:
};
main.cpp
我只是得到一些随机数。这里有什么帮助吗?您没有在类中初始化i,您的构造函数应该如下所示:
MyClass::MyClass() : i(1)
{}
看起来您也有一些拼写错误,如下所示:
MyClass myObject = *new MyClass();
应该是:
MyClass *myObject = new MyClass();
cout << myObject->i << endl;
这是:
cout << myObject.i << endl;
应该是:
MyClass *myObject = new MyClass();
cout << myObject->i << endl;
尽管如此,正如chris所说,更简单的选择如下:
MyClass myObject ;
cout << myObject.i << endl;
设置为1的i不是该类的成员。它是任何类之外的静态变量。一旦我属于您的类,您需要在其构造函数中初始化它
#include "MyClass.h"
// int i = 1; <-- not here
MyClass::MyClass()
{
i = 1; // here
}
要在main函数中初始化对象,只需执行以下操作:
int main()
{
// MyClass myObject = *new MyClass(); <-- myObject is not a pointer
MyClass myObject;
cout << myObject.i << endl;
cin.get();
}
有两件事是错误的:首先,您在MyClass.cpp中重新定义了i,请尝试在构造函数中为其赋值:
//int i = 1;
MyClass::MyClass() : i(1)
{
}
其次,在main中声明对象的方式也是错误的。你可以:
int main()
{
MyClass* myObject = new MyClass();
cout << myObject->i << endl;
cin.get();
delete myObject;
}
如果需要指向动态分配对象的指针,或者
int main()
{
MyClass myObject;
cout << myObject.i << endl;
cin.get();
}
如果要在堆栈上分配对象。您正在泄漏内存。只需创建如下对象:MyClass myObject;-放弃对new的调用。MyClass.h和MyClass.cpp的标签似乎放错了位置。我很欣赏编译的代码。你不需要。你需要学习C++,从教科书,演练等等。目前你只是把东西扔在一起,直到它编译,现在你很惊讶它不做一件事,你希望它可能。这不是初始化。这是我的任务。当你试图调用构造函数,或使用常量或引用,或诸如此类的东西时,情况会有所不同。@chris是的,我知道,我只是想尽可能接近OP的代码。我修改了我的答案,建议将其作为一种更简单的方法。