2014-02-17 2 views
0

Я новичок в C++, но сейчас я работаю с python .. и я не могу понять это ... Я пробовал использовать этот «указатель» но я получаю ошибку, поэтому мне было интересно, может ли кто-нибудь указать мне в правильном направлении.C++ эквивалентность self.object (python)

Благодаря

Это то, что я пытаюсь достичь:

У меня есть дата и класс человека, и я должен добавить метод класса, чтобы проверить, если человек был бы и взрослый или ребенок

это мой метод до сих пор:

bool isAdult() 
{ 
    util::Date today = util::Date(); 

    int age = today.getYear()- this.getYear(); 

    if (today.getMonth() < this.getMonth() || (today.getMonth() == this.getMonth() && today.getDay() < this.getDay())) 
    { 
     age = age -1; 
    } 

    if (age >= 18) 
    {return true;} 
    else{return false;} 


} 

Каким образом я могу сделать что-то вроде этого:

ostringstream os; 
os << getDay() << " \n"; 
os << getMonth() << " \n"; 
os << getYear(); 

Но я не могу это сделать:

long year = getYear(); 
+1

Что такое ошибка? Это поможет всем лучше решить проблему –

+1

. Покажите код, пожалуйста, чтобы мы могли воспроизвести ошибку. – herohuyongtao

+0

Я сделал предположение о том, что вы здесь делаете, но я согласен с приведенными выше комментариями: вы должны показать, что вы пытаетесь сделать, показывая какой-то код. –

ответ

5

В C++, this тип указателя, так что вам, вероятно, нужно разыменования его, чтобы вызвать членов.

Есть два способа разыменовывают указателя для вызова пользователей:

// Using the * operator to get the actual instance 
auto result = (*this).do_something(); 

// Using the -> operator to dereference and get/invoke member simultaneously 
auto result = this->do_something(); 
+0

Или вы просто можете просто отказаться от этого «всего». – juanchopanza

+1

Правда, но я считаю его более читаемым (и ценю тот факт, что он в основном требуется в Python). –

+2

Это вопрос мнения. Я нахожу его слишком многословным и менее удобочитаемым. – juanchopanza

Смежные вопросы