4
#include "stdafx.h"
using namespace System;

class Calculater; // how to tell the compiler that the class is down there? 

int main(array<System::String ^> ^args)
{
    ::Calculater *calculater = new Calculater();

    return 0;
}

class Calculater
{
public:
    Calculater()
    {
    }
    ~Calculater()
    {
    }

};

メインの後にクラスを宣言していますが、どのようにコンパイラに自分のクラスが何であるかを伝えますか?
クラスCalculatorを試しました。メインの前ですが、機能していません。

4

3 に答える 3

6

事前宣言の後に、Calculator へのポインターを設定できます。問題は、new Calculator()その時点で定義されていないコンストラクター ( ) です。あなたはこれを行うことができます:

メインの前:

class Calculator { // defines the class in advance
public:
    Calculator(); // defines the constructor in advance
    ~Calculator(); // defines the destructor in advance
};

メインの後:

Calculator::Calculator(){ // now implement the constructor
}
Calculator::~Calculator(){ // and destructor
}
于 2013-03-31T21:07:08.973 に答える
6

あなたが書いたようにそれを行うことはできません。コンパイラは、クラスを使用する前にクラスの定義を確認できる必要があります。クラスをmain関数の前に配置するか、できればインクルードする別のヘッダー ファイルに配置する必要があります。

于 2013-03-31T21:02:41.880 に答える
1

メインの前にクラス定義を置きます:

#include "stdafx.h"
using namespace System;

class Calculater
{
public:
    Calculater()
    {
    }
    ~Calculater()
    {
    }

};

int main(array<System::String ^> ^args)
{
    Calculater *calculater = new Calculater();

    return 0;
}
于 2013-03-31T21:04:13.880 に答える