我很确定我可能做了一些愚蠢的事,但我已经在这一个半小时了,无法弄清楚我错过了什么。
我可以使用默认构造函数从我的类创建一个对象,但是在添加一个对象时不能使用重载的构造函数。我不能调用我所包含的打印成员函数或我尝试包含的任何其他函数。我已将这三个文件放入Code :: Blocks项目中,并得到了相同的结果。我也尝试了Dev-Cpp上的三个文件,结果相同。任何帮助将不胜感激。
主要功能
#include <iostream>
#include "Appt.h"
using namespace std;
int main()
{
Appt a();
a.print();
}
Appt.h
#ifndef APPT_H
#define APPT_H
#include <iostream>
#include <string>
using namespace std;
class Appt
{
public:
Appt();
void print();
private:
string description;
};
#endif // APPT_H
Appt.cpp
#include "Appt.h"
using namespace std;
Appt::Appt()
{
description = "No Description";
}
void Appt::print()
{
cout << description << endl;
}
我正在使用Code :: Blocks 16.01和GCC编译器。这些文件当前不在项目中。我也在运行Windows 7.
答案 0 :(得分:3)
看起来你的问题可能与这一行有关:
Appt a();
不幸的是,虽然这看起来像是调用默认构造函数,但它实际上将a
声明为类型Appt()
,即一个不带参数的函数并返回Appt
。如果要调用默认构造函数,可以选择以下几个选项:
Appt a;
Appt a = Appt();
Appt a{}; // requires C++11
我更喜欢最后一个。