2016-10-11 3 views
-1

파이썬에서 시작하여 C++로 시작하려고하지만 C++에서 클래스 매개 변수에 액세스하는 방법을 알 수 없습니다. 필자는 3 개의 C++ 파일뿐만 아니라 Python 예제 클래스를 첨부했습니다.클래스 메서드에서 생성자 매개 변수에 액세스합니다.

이 파이썬의 경우 :

class Greeting: 
    def __init__(self, name): 
     self.name = name 
    def say_name(self): 
     return "Hello, %s" % self.name 

가 무엇 say_name 방법에 self.name 인스턴스 PARAM에 액세스 할 수있는 C++ 해당하는 것입니까?

오른쪽 지금 내가 무엇을 가지고 :

greeting.hpp

class greeting 
{ 

public: 

    greeting(std::string name); 
    ~greeting(); 

    std::string salutation(std::string salutation); 

private: 

    // Nothing 

}; 

greeting.cpp

#include "greeting.hpp" 

greeting::greeting(std::string name, std::string nationality) 
{ 
    std::cout << "greeting class constructed\n"; 

} 

greeting::~greeting() 
{ 

} 

std::string greeting::salutation(std::string salutation) 
{ 
    std::string res = salutation + ", " + name; 
    return res; 
} 

MAIN.CPP

#include <iostream> 
#include "greeting.hpp" 

int main(int argc, const char * argv[]) { 

greeting obj = greeting("Rashad", "American"); 

std::string word = "Hello"; 

std::cout << obj.salutation(word) << std::endl; 

return 0; 
} 

name 매개 변수 greeting::salutation 메서드에있는 매개 변수에 액세스 할 수 없으므로 분명히 실행되지 않습니다. 그래서 누군가가 어떻게/내가 위의 파이썬 예제와 비슷한 클래스 메소드에서 C++ 생성자 params에 액세스 할 수 있는지 설명 할 수 있습니까? 내가 엑스 코드에 ++ 8. 감사 .HPP에서

+2

기본 C++을 공부하는 것이 훨씬 쉽고 생산적 일 것입니다. 또한 파이썬과 C++ 사이에는 직접적인 동일한 기능이 없을 수도 있음을 명심하십시오. – juanchopanza

+0

C++에서는 변수 (매개 변수 또는 기타)에 대해 함수에 대해 동일한 이름을 사용하는 것이 일반적입니다. –

답변

2

, 당신은이 :

self.name = name 

목적은 주어진 입력을 저장 name라는 멤버 변수를 가지고있다. C++ 클래스에서 비슷한 것을 필요로합니다.

class greeting 
{ 
    public: 

    greeting(std::string name); 
    ~greeting(); 

    std::string salutation(std::string salutation); 

private: 

    // Add name as a private member 
    std::string name_; 

}; 

그리고 이름이 생성자의 멤버 변수에 저장되어 있는지 확인하십시오.

greeting::greeting(std::string name) : name_(name) 
{ 
    std::cout << "greeting class constructed\n"; 
} 

다른 멤버 함수에서 멤버 변수 name_을 사용할 수 있습니다.

std::string greeting::salutation(std::string salutation) 
{ 
    std::string res = salutation + ", " + name_; 
    return res; 
} 
0

을 C를 실행하고있어

당신은 한 parametar으로 생성자를 선언합니다. .cpp에 이 지정되어 있습니다. 생성자에는 2 개의 매개 변수가 있습니다.

일치해야합니다.

또한 학습을 ​​위해 클래스를 두 파일로 분리 할 필요가 없습니다. 클래스 밖에서 메소드 정의를 작성하지 않아도됩니다. 파이썬 코드에서

+0

이는 주석이어야합니다. – juanchopanza

+0

@dimm을 입력 해 주셔서 감사합니다. 그러나 질문은 @R Sahu가 응답 한 객체 측면에 초점을 맞추 었습니다. 구문 측면에 그다지 많은 부분이 없었습니다 (이미 코드가 실행되지 않았 음을 언급했듯이). – ralston

+0

왜 downvote도 확실하지 않습니다. – ralston

관련 문제