0

これら 3 つのコード ファイルがあり、コンストラクターから「山が作成されました」と出力したいと考えています。どこが間違っているのか、何をしなければならないのか教えてください。

Mountains.h

#ifndef MOUNTAINS_H
#define MOUNTAINS_H

class Mountains{
    public:
        Mountains();
        ~Mountains();
};
#endif

山.cpp

#include <cstdlib>
#include <iostream>
#include "Mountains.h"

Mountains::Mountains()
{
    cout<<"Mountains were just created"<<endl;
}

Mountains::~Mountains()
{
    cout<<"Mountains are about to be destroyed"<<endl;
}

main.cpp

#include <cstdlib>
#include <iostream>
#include "Mountains.h"


int main(int argc, char *argv[])
{

    Mountains m();

    system("PAUSE");
    return EXIT_SUCCESS;
}

私が呼び出すと、「山が作成されたばかりです」とコンソールに書き込まれると思いますが、Mountains m();これは起こっていません。

4

1 に答える 1

7

問題はここにあります:

Mountains m();

これは、と呼ばれるデフォルトで初期化さ Mountainsれたオブジェクトではありませんmmこれは、パラメーターをとらず、 を返す呼び出される関数Mountainsです。

デフォルトで初期化 されたものを作成するには、次のMountainsことを行う必要があります。

Mountains m;

またはC++11の場合:

Mountains m{};

やなどの標準ライブラリstd::のものを使用する場合も、資格がありません。それは、落胆はしますが、関連する場所でを行わないことを前提としています。coutendlusing namespace std;

于 2013-01-08T21:01:21.047 に答える