无法调用成员函数

时间:2016-04-01 21:52:03

标签: c++ class object codeblocks member

我很确定我可能做了一些愚蠢的事,但我已经在这一个半小时了,无法弄清楚我错过了什么。

我可以使用默认构造函数从我的类创建一个对象,但是在添加一个对象时不能使用重载的构造函数。我不能调用我所包含的打印成员函数或我尝试包含的任何其他函数。我已将这三个文件放入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.

1 个答案:

答案 0 :(得分:3)

看起来你的问题可能与这一行有关:

Appt a();

不幸的是,虽然这看起来像是调用默认构造函数,但它实际上将a声明为类型Appt(),即一个不带参数的函数并返回Appt。如果要调用默认构造函数,可以选择以下几个选项:

Appt a;
Appt a = Appt();
Appt a{};  // requires C++11

我更喜欢最后一个。