Другое С/С++ Вопрос - Ответ

Sadow

Известный
1,437
585
Да, ты же хочешь использовать кириллицу
1665326320338.png
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
есть метод в структуре, в который требуется передать переменную, как сделать метод, чтобы принимал перменную так x.func(), а не так func(x). К примеру .c_str()




Что ему надо?
1665331496024.png

C++:
#include <iostream>
#include <vector>

using namespace std;

template<typename T>
struct ArrayAction
{
    ArrayAction(const T& _array)
    {
        for (auto i = _array.cbegin(); i != _array.cend(); ++i)
            cout << *i << endl;
    }
};

int main()
{
    vector<int> dad{ 1,5,6,2 };
    ArrayAction<vector<int>>(dad);
}
но если сделаю так, все компилируется
1665331529645.png
 
Последнее редактирование:

kin4stat

mq-team
Всефорумный модератор
2,730
4,710
есть метод в структуре, в который требуется передать переменную, как сделать метод, чтобы принимал перменную так x.func(), а не так func(x). К примеру .c_str()




Что ему надо?Посмотреть вложение 172450
C++:
#include <iostream>
#include <vector>

using namespace std;

template<typename T>
struct ArrayAction
{
    ArrayAction(const T& _array)
    {
        for (auto i = _array.cbegin(); i != _array.cend(); ++i)
            cout << *i << endl;
    }
};

int main()
{
    vector<int> dad{ 1,5,6,2 };
    ArrayAction<vector<int>>(dad);
}
но если сделаю так, все компилируется Посмотреть вложение 172451
Ниче не понятно, но оч интересно
 
  • Ха-ха
Реакции: ARMOR
D

deleted-user-204957

Гость
есть метод в структуре, в который требуется передать переменную, как сделать метод, чтобы принимал перменную так x.func(), а не так func(x). К примеру .c_str()




Что ему надо?Посмотреть вложение 172450
C++:
#include <iostream>
#include <vector>

using namespace std;

template<typename T>
struct ArrayAction
{
    ArrayAction(const T& _array)
    {
        for (auto i = _array.cbegin(); i != _array.cend(); ++i)
            cout << *i << endl;
    }
};

int main()
{
    vector<int> dad{ 1,5,6,2 };
    ArrayAction<vector<int>>(dad);
}
но если сделаю так, все компилируется Посмотреть вложение 172451
C++:
ArrayAction{ dad };
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ниче не понятно, но оч интересно
брат

мне нужен метод вида x.func(), т.е "х" входная информация. что я хочу сделать:
C++:
template<typename T>
struct COUT
{
    string operator ()(T& x)
    {
        stringstream temp;
        copy(x.begin(), x.end(), std::ostream_iterator<int>(temp, " "));
        return temp.str();
    }
};

int main()
{
    vector<int> VEC{1,3,5,4};
    stringstream result;

    cout << COUT<vector<int>>()(VEC); // VEC.COUT<vector<int>>();
}
17 строка, как сделать вызов в таком виде как в коменте? что изменить в структуре для этого
 
Последнее редактирование:

san0

Известный
Друг
411
267
17 строка, как сделать вызов в таком виде как в коменте? что изменить в структуре для этого
Через стандартное наследование, это первое что в голову приходит
C++:
template<typename T>
class VecExt : public std::vector<T> {
  public:
    VecExt(std::initializer_list<T> l) : std::vector<T>(l) {}
    std::string to_string() const {
        std::stringstream temp;
        std::copy(this->begin(), this->end(), std::ostream_iterator<T>(temp, " "));
        return temp.str();
    }
};

Но вообще можно конкретно для i/o потоков и для вашего примера указать реализацию оператора <<, хотя я так понял это просто пример задачи и по этой причине придираться к выводу информации не стоит
C++:
    friend std::ostream &operator<<(std::ostream& os, const VecExt<T>& m) { 
        std::copy(m.begin(), m.end(), std::ostream_iterator<T>(os, " "));
        return os;
    }

Полный код:
C++:
#include <iostream>
#include <vector>
#include <algorithm>
#include <sstream>
#include <iterator>
#include <initializer_list>

template<typename T>
class VecExt : public std::vector<T> {
  public:
    VecExt(std::initializer_list<T> l) : std::vector<T>(l) {}
    std::string to_string() const {
        std::stringstream temp;
        std::copy(this->begin(), this->end(), std::ostream_iterator<T>(temp, " "));
        return temp.str();
    }
    
    friend std::ostream &operator<<(std::ostream& os, const VecExt<T>& m) { 
        std::copy(m.begin(), m.end(), std::ostream_iterator<T>(os, " "));
        return os;
    }
};

int main() {
    const auto v = VecExt<int>{1,3,5,4};
    std::cout << v.to_string() << std::endl;
    std::cout << v;
}
 

ARMOR

kjor32 is legend
Модератор
4,847
6,071
Есть значение 0x32 ( 50 ) которое хранится в переменной signed char по смещению 63F18, и имеет максимальное значение 127, но мне нужно чтобы у меня была возможность вставлять туда значения INT16.

Код из IDA:
C++:
.text:10063F10 8B AE E6 63 00+                mov     ebp, [esi+63E6h]
.text:10063F10 00
.text:10063F16 83 C5 32                       add     ebp, 32h ; '2'

UP: Код взял из samp.dll R1 если что.
 

AdCKuY_DpO4uLa

Известный
287
477
Есть значение 0x32 ( 50 ) которое хранится в переменной signed char по смещению 63F18, и имеет максимальное значение 127, но мне нужно чтобы у меня была возможность вставлять туда значения INT16.

Код из IDA:
C++:
.text:10063F10 8B AE E6 63 00+                mov     ebp, [esi+63E6h]
.text:10063F10 00
.text:10063F16 83 C5 32                       add     ebp, 32h ; '2'

UP: Код взял из samp.dll R1 если что.
Можешь пропатчить инструкцию и вместо esi+63e6 пихнуть адрес своей переменной
 
  • Клоун
Реакции: Fott

Savchik Blazer

Но я, мечту свою лелея...
Проверенный
671
293
Как можно реализовать такое
Lua:
if not isSampLoaded() or not isSampfuncsLoaded() then return false end
на с++?
C++:
 *reinterpret_cast<void**>(reinterpret_cast<DWORD>(GetModuleHandleA("samp.dll")) + 0x21A0F8) != nullptr; //R2 - 0x21A100 R3 - 0x26E8DC R4 - 0x26EA0C
 
Последнее редактирование:
  • Нравится
Реакции: jenees.21