无法调用成员函数

Posted

技术标签:

【中文标题】无法调用成员函数【英文标题】:Unable to call member functions 【发布时间】:2016-04-01 21:52:03 【问题描述】:

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

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

我在 GCC 编译器中使用 Code::Blocks 16.01。这些文件当前不在项目中。我也在运行 Windows 7。

【问题讨论】:

确切的错误是对我试图访问的任何函数的未定义引用。 【参考方案1】:

看来您的问题可能与此行有关:

Appt a();

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

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

我更喜欢最后一个。

【讨论】:

哦,太好了!谢谢你。不幸的是,这并没有解决我的问题。现在我正确调用它,它也根本找不到默认构造函数。

以上是关于无法调用成员函数的主要内容,如果未能解决你的问题,请参考以下文章

派生类成员函数调用时 error C2248: 无法访问 protected 成员 的排雷之路

C++中的派生类,可以不定义对象直接调用基类的成员和调用自己的成员函数嘛???

C++之静态

由于 PHP 中的“调用非对象上的成员函数 X”,我无法上传图像

如何调用成员函数指针?

关于类中静态成员函数和静态成员变量的知识点