-1

我的代码中出现错误,我根本没有得到。

这是我的代码:

我的类.h

#include "MyClass.h"

int i = 1;

MyClass::MyClass()
{

}

MyClass:~MyClass()
{

}

MyClass.cpp #pragma once

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

        int i;
    protected:
    private:
};

主文件

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

using namespace std;

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

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

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

4

4 回答 4

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;
于 2013-05-16T03:21:10.073 回答
0

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

于 2013-05-16T03:22:54.930 回答
0

Couple things wrong: First, you're redeclaring i in MyClass.cpp, try assigning to it in the constructor instead:

//int i = 1;

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

}

Second, the way you're declaring your object in your main() is wrong too. Either you do:

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

    cout << myObject->i << endl;
    cin.get();

    delete myObject;
}

if you want a pointer to a dynamically allocated object or just

int main()
{
    MyClass myObject;

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

if you want an object allocated on the stack.

于 2013-05-16T03:23:57.687 回答
0

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

#include "MyClass.h"

// int i = 1;   <-- not here

MyClass::MyClass()
{
    i = 1; // here
}

并在主函数中初始化您的对象,只需执行以下操作:

int main()
{
//    MyClass myObject = *new MyClass();  <-- myObject is not a pointer
    MyClass myObject;

    cout << myObject.i << endl;
    cin.get();
}
于 2013-05-16T03:23:06.133 回答