Мой конструктор:
bnf::bnf(string encoded)
{
this->encoded = encoded;
}
копирует строковые данные в член. (Или это ..?)
У меня будет метод рекурсивного декодирования, но я хотел бы избежать написания this->encoded
все время.
Как я могу правильно и просто создать псевдоним / ссылку на член в методе?
Будет ли этого лучше избегать?
Вы можете просто передать другой именованный параметр. Это при условии, что encoded
является частным строковым членом вашего bnf
учебный класс
bnf::bnf(string en)
{
encoded = en;
}
В других ваших функциях вам по-прежнему не нужно писать this
если вы не хотите:
void bnf::printCode(){
cout << encoded << endl;
}
Предполагая, что ваш класс выглядит так:
class bnf{
public:
bnf(string en};
void printCode();
//<some other functions>
private:
string encoded;
}
Нет ничего плохого в том, что вы делаете сейчас. Это выразительно, понятно и правильно. Не пытайтесь разрушить это.
Если вы беспокоитесь о «накладных расходах» с использованием this
указатель, не надо: это уже настолько эффективно, насколько это возможно. Буквально нет способа сделать это быстрее.
Если ваш вопрос немного неправильный и все, что вы хотите сделать, это упомянуть переменную-член внутри функции-члена, то:
struct MyClass
{
int x;
void myFunction();
};
void MyClass::myFunction()
{
this->x = 4;
}
Функция эквивалентна:
void MyClass::myFunction()
{
x = 4;
}