2017-12-14 13 views
-8

클래스 "hello"에서 공용 함수를 호출하려고하지만이 오류는 허용하지 않습니다. 내가 뭘 잘못하고 있는지 말해줘? 이 오류입니다클래스 함수가 ​​정의되었지만 호출되지 않았습니다. (C++)

#include <iostream> 

using std::cout; 
using std::cin; 
using std::string; 

class hello { 
    public: 
     void sayit(){ 
      cout << "Hello, World!"; 
     } 
    }; 

int main(){ 
    string str; 
    cout << "Type in \"start\":"; 
    cin >> str; 
    if (str == "start"){ 
//this is where the error happens. 
     hello.sayit(); 
    } 
} 

:

다음은 코드의

[Error] expected unqualified-id before '.' token

+2

sayIt()을 static으로 만들거나 hello 객체를 선언 한 다음 메서드를 호출해야합니다. –

답변

0

void sayit()는 클래스의 멤버 함수를 정의합니다.

클래스 멤버 함수를 호출하려면 클래스 인스턴스가 필요합니다.

hello hello_instance; 
hello_instance.sayit(); 

sayit을 정적 기능으로 변경할 수 있습니다. 정적 함수는 클래스의 멤버이지만 클래스의 인스턴스를 필요로하지 않습니다. 따라서 static 메서드에는 this 변수가 없으며 비 정적 멤버 변수는 사용할 수 없습니다.

static void sayit(){ 
    cout << "Hello, World!"; 
} 

는 멤버 변수를 사용하지 않습니다 그리고 당신은 sayIt()static을 만들거나 hello 객체를 선언하고 method를 호출하거나 필요

hello::sayit(); 
1

로 호출 할 수 있습니다. 정적 메서드는 static void sayIt()처럼 보이며 정적 메서드는 클래스 인스턴스가 필요하지 않으므로 hello.sayIt()과 같이 호출합니다. hello 개체를 사용하는 경우이 개체는 hello x; x.sayIt()처럼 수행됩니다.

+1

Asker가 시도하는 것과 약간 다른 정적 함수 호출 방법에 대한 데모를 추가하는 것이 좋습니다. – user4581301

+0

@ user4581301 답변에 추가합니다. –