C++ 我的课不好

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()

我的代码中有一个错误,我根本不知道

这是我的密码:

MyClass.h

MyClass.cpp 布拉格语一次

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的代码。我修改了我的答案,建议将其作为一种更简单的方法。