C ++从另一个文件调用构造函数

时间:2013-01-08 20:57:52

标签: c++ class constructor

我有3个代码文件,我想从构造函数中打印“刚刚创建了山脉”。 你能告诉我我错在哪里以及我必须做什么吗?

Mountains.h

#ifndef MOUNTAINS_H
#define MOUNTAINS_H

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

Mountains.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();时,要写入控制台。这不会发生。

1 个答案:

答案 0 :(得分:7)

问题就在这里:

Mountains m();

这不是名为Mountains默认初始化 m对象。这是一个名为m的函数,它不带参数并返回Mountains

要创建默认初始化 Mountains,您需要执行以下操作:

Mountains m;

C ++ 11

Mountains m{};

使用标准库中的内容时,您也缺少std::资格,例如coutendl。这是假设你没有using namespace std;,虽然在相关的地方被删除了。