我有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();
时,要写入控制台。这不会发生。
答案 0 :(得分:7)
问题就在这里:
Mountains m();
这不是名为Mountains
的默认初始化 m
对象。这是一个名为m
的函数,它不带参数并返回Mountains
。
要创建默认初始化 Mountains
,您需要执行以下操作:
Mountains m;
或 C ++ 11 :
Mountains m{};
使用标准库中的内容时,您也缺少std::
资格,例如cout
或endl
。这是假设你没有using namespace std;
,虽然在相关的地方被删除了。