如何在C ++中调用属于某个类的函数?

时间:2011-03-22 02:52:46

标签: c++

我正在尝试调用属于类program1的函数hello

#include <iostream>
using namespace std;

class program1
{
    program1();
    ~program1();
    hello();
}

program1::hello()
{ 
    cout<<"hello";
}

int main()
{
    program1.hello(); //Call it like a normal function...
    cin.get();
}

4 个答案:

答案 0 :(得分:3)

默认情况下,中的名称是私有的。

class program1 {
public:
  program1();
  ~program1();
  void hello() ;
};

// ...

int main(int, char **) {
  program1 myProgram;
  myProgram.hello();
  return 0;
}

或者,您可以在临时方法上调用方法:

int main(int, char **) {
    program1().hello();
    return 0;
}

但这可能是在学期的后期。

答案 1 :(得分:2)

你忘了创建一个对象:

int main()
{
program1 p1;
p1.hello();
}

答案 2 :(得分:2)

  • 类定义应以;
  • 结尾
  • 其次,您需要实例化类以在其上调用成员。 (即,为班级创建一个对象)
  • 在C ++中,方法应该有返回类型

    program1::hello(); // method should have a return type.

  • 默认情况下,类成员和方法是私有,这意味着您无法在类范围之外访问它们。


所以,类定义应该是 -

class program1
{
    public:       // Correction 1
      program1();
      ~program1();
      void hello();  // Correction 2
}; 

void program1::hello()  // Need to place return type here too.
{ 
   cout<<"hello";
}

现在,在创建类program1的对象时,可以在其上调用方法hello()

答案 3 :(得分:2)

此版本已编辑。 (确保包括所有方法的主体)

#include <iostream>
using namespace std;

class program1
{
public: // To allow outer access
    program1();
    ~program1();
    void hello(); // The void
}; // Don't miss this semicolon

void program1::hello() // The void
{ 
    cout<<"hello";
}

int main()
{
    program1 prog; // Declare an obj
    prog.hello(); //Call it like a normal function...
    cin.get();
}

我注意到你遗漏了你的hello()函数的返回类型。 如果你想调用hello()作为成员函数,那么按照建议你应该创建一个对象。

program1 prog;
prog.hello();

如果你想在没有对象的情况下调用它,你应该使用静态函数。

class program1
{
public: // To allow outer access
    program1();
    ~program1();
    static void hello(); // The void
}

然后你可以这样称呼它:

program1::hello();

因此,工作代码应该是这样的:

#include <iostream>
using namespace std;

class program1 {
public:
    void hello();
}; // Don't miss this semicolon

class program2 {
public:
    void static hello(); // to demonstrate static function
}; // Don't miss this semicolon

void program1::hello() {
    cout << "Hello, I'm program1." << endl;
}

void program2::hello() {
    cout << "Hello, I'm program2." << endl;
}

int main(void) {
    program1 prog1;

    prog1.hello(); // Non-static function requires object
    program2::hello(); // Static function doesn't

    return 0; // Return 0
}