C ++: псевдоним члена строки в методе

Мой конструктор:

bnf::bnf(string encoded)
{
this->encoded = encoded;
}

копирует строковые данные в член. (Или это ..?)

У меня будет метод рекурсивного декодирования, но я хотел бы избежать написания this->encoded все время.

Как я могу правильно и просто создать псевдоним / ссылку на член в методе?

Будет ли этого лучше избегать?

0

Решение

Вы можете просто передать другой именованный параметр. Это при условии, что 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;
}
1

Другие решения

Нет ничего плохого в том, что вы делаете сейчас. Это выразительно, понятно и правильно. Не пытайтесь разрушить это.

Если вы беспокоитесь о «накладных расходах» с использованием this указатель, не надо: это уже настолько эффективно, насколько это возможно. Буквально нет способа сделать это быстрее.

Если ваш вопрос немного неправильный и все, что вы хотите сделать, это упомянуть переменную-член внутри функции-члена, то:

struct MyClass
{
int x;
void myFunction();
};

void MyClass::myFunction()
{
this->x = 4;
}

Функция эквивалентна:

void MyClass::myFunction()
{
x = 4;
}
1

По вопросам рекламы [email protected]