Calling Member Functions within Main C++

前端 未结 7 1504
野的像风
野的像风 2021-02-04 12:24
#include 

using namespace std;

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

void MyClass::printInformation()
{
     return;
}

int main(         


        
相关标签:
7条回答
  • 2021-02-04 12:41

    From your question it is unclear if you want to be able use the class without an identity or if calling the method requires you to create an instance of the class. This depends on whether you want the printInformation member to write some general information or more specific about the object identity.

    Case 1: You want to use the class without creating an instance. The members of that class should be static, using this keyword you tell the compiler that you want to be able to call the method without having to create a new instance of the class.

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

    Case 2: You want the class to have an instance, you first need to create an object so that the class has an identity, once that is done you can use the object his methods.

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

    If you don't know when to use pointers, read Pukku's summary in this Stack Overflow question.
    Please note that in the current case you would not need a pointer. :-)

    0 讨论(0)
  • 2021-02-04 12:43

    On an informal note, you can also call non-static member functions on temporaries:

    MyClass().printInformation();
    

    (on another informal note, the end of the lifetime of the temporary variable (variable is important, because you can also call non-const member functions) comes at the end of the full expression (";"))

    0 讨论(0)
  • 2021-02-04 12:51

    You need to create an object since printInformation() is non-static. Try:

    int main() {
    
    MyClass o;
    o.printInformation();
    
    fgetc( stdin );
    return(0);
    
    }
    
    0 讨论(0)
  • 2021-02-04 12:52

    If you want to make your code work as above, the function printInformation() needs to be declared and implemented as a static function.

    If, on the other hand, it is supposed to print information about a specific object, you need to create the object first.

    0 讨论(0)
  • 2021-02-04 12:57

    declare it "static" like this:

    static void MyClass::printInformation() { return; }
    
    0 讨论(0)
  • 2021-02-04 12:58

    Declare an instance of MyClass, and then call the member function on that instance:

    MyClass m;
    
    m.printInformation();
    
    0 讨论(0)
提交回复
热议问题