我的班级不能正常工作

时间:2013-05-16 03:17:52

标签: c++ class object int

我的代码中出现了一个错误,我根本没有。

这是我的代码:

MyClass.h

#include "MyClass.h"

int i = 1;

MyClass::MyClass()
{

}

MyClass:~MyClass()
{

}

MyClass.cpp     #pragma一次

class MyClass
{
    public:
        MyClass();
        virtual ~MyClass();

        int i;
    protected:
    private:
};

的main.cpp

#include<iostream>
#include "MyClass.h"

using namespace std;

int main()
{
    MyClass myObject = *new MyClass();

    cout << myObject.i << endl;
    cin.get();
}

我只是得到一些随机数。这里有什么帮助吗?

4 个答案:

答案 0 :(得分:2)

您没有在班级中初始化i,您的构造函数应该如下所示:

MyClass::MyClass() : i(1)
{}

看起来你也有一些错别字,这个:

MyClass myObject = *new MyClass();

应该是:

MyClass *myObject = new MyClass();

和此:

cout << myObject.i << endl;     

应该是:

cout << myObject->i << endl;

虽然,克里斯说更简单的选项如下:

MyClass myObject ;

cout << myObject.i << endl;

答案 1 :(得分:0)

您设置为1的i不是该类的成员。它是任何类之外的静态变量。

答案 2 :(得分:0)

一旦我属于你的类,你需要在它的构造函数

中初始化它
#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();
}

答案 3 :(得分:0)

错误:首先,你在MyClass.cpp中重新声明我,尝试在构造函数中指定它:

//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();
}

如果你想在堆栈上分配一个对象。