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

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
Как передать в метод строку по ссылке и вернуть измененное значение или изменить значение?


C-подобный:
methodmap Config < KeyValues
{
....
....
    public void Name(char &sName)
    {
        this.Rewind();
        this.GetString("Name", sName, sizeof(sName));    //argument type mismatch (arg 2)
    }
....
....
....
    public char[] Name()
    {
        char sName[256];
        this.Rewind();
        this.GetString("Name", sName, sizeof(sName));
        return sName;
    }
 
    при использовании methodmap.Name со второго варианта кидает такую ошибку
    //missing function call, cannot use non-static member function as a value
    //A numeric range with the syntax “n1 .. n2”, where n1 and n2 are numeric constants, is invalid. Either one of the values in not a valid number, or n1 is not smaller than n2.
}
Если с обычными интами или булями ясно, то тут что-то проблемсы
 
Решение
Как передать в метод строку по ссылке и вернуть измененное значение или изменить значение?


C-подобный:
methodmap Config < KeyValues
{
....
....
    public void Name(char &sName)
    {
        this.Rewind();
        this.GetString("Name", sName, sizeof(sName));    //argument type mismatch (arg 2)
    }
....
....
....
    public char[] Name()
    {
        char sName[256];
        this.Rewind();
        this.GetString("Name", sName, sizeof(sName));
        return sName;
    }
 
    при использовании methodmap.Name со второго варианта кидает такую ошибку
    //missing function call, cannot use non-static member function as a value
    //A numeric range with the syntax “n1 .. n2”, where n1 and n2 are numeric constants, is invalid. Either one of...

StateByte

Fullstack Software Engineer.
Сообщения
431
Реакции
622
Как передать в метод строку по ссылке и вернуть измененное значение или изменить значение?


C-подобный:
methodmap Config < KeyValues
{
....
....
    public void Name(char &sName)
    {
        this.Rewind();
        this.GetString("Name", sName, sizeof(sName));    //argument type mismatch (arg 2)
    }
....
....
....
    public char[] Name()
    {
        char sName[256];
        this.Rewind();
        this.GetString("Name", sName, sizeof(sName));
        return sName;
    }
 
    при использовании methodmap.Name со второго варианта кидает такую ошибку
    //missing function call, cannot use non-static member function as a value
    //A numeric range with the syntax “n1 .. n2”, where n1 and n2 are numeric constants, is invalid. Either one of the values in not a valid number, or n1 is not smaller than n2.
}
Если с обычными интами или булями ясно, то тут что-то проблемсы
В аргументы функции добавляете два аргумента буффер и его размер, и внутри этой функции записываете их через strcopy или другим методом (format)
Сообщения автоматически склеены:

в вашем случае, достаточно их передать в функцию this.GetString(“Name”, *,*);
 
Решение

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
В аргументы функции добавляете два аргумента буффер и его размер, и внутри этой функции записываете их через strcopy или другим методом (format)
Сообщения автоматически склеены:

в вашем случае, достаточно их передать в функцию this.GetString(“Name”, *,*);
Спасибо!
Я кстати также пробовал изначально делать, но видимо что-то по синтаксису неправильно нарисовал, в итоге 30 раз туда суда менял и забыл уже что делал

Решение:
C++:
    public void Name(char[] sName, int size)
    {
        this.Rewind();
        this.GetString("Name", sName, size);
    }
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,558
Реакции
5,051
ещё бы у тебя был argument type mismatch (arg 2) когда char &sName а должно быть char[] sName
Сообщения автоматически склеены:

и да, функция может менять значения аргументов, если они не const
Сообщения автоматически склеены:

во всяком случае для char & не нужно почему-то
 

ykpon

Владыка
Сообщения
675
Реакции
399
ещё бы у тебя был argument type mismatch (arg 2) когда char &sName а должно быть char[] sName
Сообщения автоматически склеены:

и да, функция может менять значения аргументов, если они не const
Сообщения автоматически склеены:

во всяком случае для char & не нужно почему-то
Для char не нужно или для char[]? Может массив по ссылке передается?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,558
Реакции
5,051
@ykpon, для char[]
Я где-то пробовал работать со строками так и & оказалось не нужно.
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
ещё бы у тебя был argument type mismatch (arg 2) когда char &sName а должно быть char[] sName
Сообщения автоматически склеены:

и да, функция может менять значения аргументов, если они не const
Сообщения автоматически склеены:

во всяком случае для char & не нужно почему-то
Я понимал, что из-за этого, но мне нужно было как то строку по ссылке передать и изменить ее прям в методе(я таким не занимался никогда), чтобы ничего не возвращать
 
Сверху Снизу