在主C ++中调用成员函数

时间:2009-03-25 17:51:40

标签: c++ function

#include <iostream>

using namespace std;

class MyClass
{
public:
       void printInformation();
};

void MyClass::printInformation()
{
     return;
}

int main()
{

    MyClass::printInformation();

    fgetc( stdin );
    return(0);
}

如何在printInformation内拨打main功能? 该错误告诉我,我需要使用类对象来执行此操作。

7 个答案:

答案 0 :(得分:28)

声明MyClass的一个实例,然后在该实例上调用成员函数:

MyClass m;

m.printInformation();

答案 1 :(得分:17)

如果要使代码如上所述,则需要声明函数printInformation()并将其实现为静态函数。

另一方面,如果要打印有关特定对象的信息,则需要先创建对象。

答案 2 :(得分:13)

根据您的问题,目前还不清楚您是否希望能够在没有身份的情况下使用该类,或者如果调用该方法需要您创建该类的实例。这取决于您是否希望printInformation成员编写一些一般信息或更具体的对象标识。

案例1 :您希望在不创建实例的情况下使用。该类的成员应该是 static ,使用此关键字,您告诉编译器您希望能够调用该方法而无需创建该类的新实例。

class MyClass
{
public:
    static void printInformation();
};

案例2 :您希望班级拥有实例,您首先需要创建一个对象,以便该班级具有身份一旦完成,你可以使用他的方法对象。

Myclass m;
m.printInformation();

// Or, in the case that you want to use pointers:
Myclass * m = new Myclass();
m->printInformation();

如果您不知道何时使用指针,请阅读此Stack Overflow question中的Pukku摘要。
请注意,在当前情况下,您不需要指针。 : - )

答案 3 :(得分:3)

您需要创建一个对象,因为printInformation()是非静态的。尝试:

int main() {

MyClass o;
o.printInformation();

fgetc( stdin );
return(0);

}

答案 4 :(得分:2)

将其声明为“静态”:

static void MyClass::printInformation() { return; }

答案 5 :(得分:0)

你必须创建一个类的实例来调用方法..

答案 6 :(得分:0)

在非正式的说明中,您还可以在临时对象上调用非静态成员函数:

MyClass().printInformation();

(在另一个非正式的说明中,临时变量的生命周期结束(变量很重要,因为你也可以调用非const成员函数)出现在完整表达式的末尾( “;”))