-1

コードでエラーが発生しますが、まったく発生しません。

これが私のコードです:

MyClass.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:
};

main.cpp

#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

間違っている点がいくつかあります。まず、MyClass.cpp で i を再宣言しています。代わりに、コンストラクターで 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();
}

オブジェクトをスタックに割り当てたい場合。

于 2013-05-16T03:23:57.687 に答える