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

C++ calling constructor from another file

本文关键字:c++ 构造函数 调用 文件 另一个      更新时间:2023-10-16

我有这3个代码文件,我想从构造函数中打印"Mountains were just created"。你能告诉我哪里错了,我该怎么做吗?

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();时,"Mountains was just created"会被写入控制台,这并没有发生。

问题就在这里:

Mountains m();

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

要创建一个默认初始化的 Mountains,您需要执行:

Mountains m;

c++ 11:

Mountains m{};

在使用标准库中的东西时,也缺少std::资格,如coutendl。这是假设你没有做using namespace std;,虽然不鼓励,在相关的地方。