Форум программистов, компьютерный форум CyberForum.ru

Перегрузка внутри класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как разделить участки кода в одном исходнике для разных битовых систем http://www.cyberforum.ru/cpp-beginners/thread1795956.html
В проекте нужно разделить участки программы примерно таким образом, как показано псевдокодом if (сборка выполняется для х64) компилируется эта часть программы; else if (сборка выполняется для х86) компилируется эта часть; возможно ли такое сделать?
C++ Шаблон функции для подсчета значений в массиве Всем доброго времени суток. Очень прошу помочь написать программу. Нужно создать шаблон функции count() для подсчета числа появлений некоторого значения в массиве. В основной программе передайте в функцию массив значений типа double, int и сhar. Большое спасибо за помощь. http://www.cyberforum.ru/cpp-beginners/thread1795927.html
C++ Форматирование вывода и округление double
Доброго времени суток. Я много подобных тем полистал. Но не нашел ответа. Мне нужно написать функцию, которая бы получала double число, округляла его до сотых(потом идет вывод данного числа, те можно и в строковом представлении) и возвращало бы его в виде строки. Посмотрев примеры я нашел что-то типа этого: std::string RoundAndTransformToString(double number) { std::stringstream stream;...
C++ Передача по ссылке и по значению
Эта тема стара как мир, но я хотел уточнить одну вещь. QBluetoothAddress* address = new QBluetoothAddress("00:1A:7D:DA:71:15"); void try_connect_to_local_address(QBluetoothAddress &address); Как сделать так, чтобы в функции try_connect_to_local_address в качестве аргумента была передена address, а не ее копия или новый объект?
C++ Отловить русские буквы с помощью библиотечной функции http://www.cyberforum.ru/cpp-beginners/thread1795908.html
Через _gettch() отлавливаю код вводимой буквы.Ввод произвожу на русской раскладке.При нажатии буквы "п" отлавливает код "63" и пишет что соответствует этому коду знак "?". Пробовал делать следующее: SetConsoleCP(1251); SetConsoleOutputCP(1251); так же пробовал делать через setlocale ставить LC_ALL Russian.Результата нету.Что делать, помогите, плевое дело такое не дает зделать проверку на...
C++ Наследование классов в раздельных файлах Здравствуйте! Вопрос: Реализовал .h и .cpp файлы для класса односвязного списка. Затем создал унаследованный от этого класса класс для двусвязного списка. Оба класса реализованы в отдельных файлах и при компиляции возникает ошибка. Кидаю код всех файлов. list.h: #ifndef LIST_H #define LIST_H class List подробнее

Показать сообщение отдельно
dailydose
overmind
328 / 108 / 29
Регистрация: 21.07.2016
Сообщений: 539
19.08.2016, 10:54  [ТС]     Перегрузка внутри класса
Цитата Сообщение от zss Посмотреть сообщение
Но лучше increaseValue decreaseValue сделать членами класса и this не передавать.
Эти функции я привёл для примера. У меня же в коде на данный момент:
Цитата Сообщение от Случай#1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    if (health.type == "Float")
    {
        float temp;
        ReadProcessMemory(hProc, (LPVOID)ptr, &temp, entry.size, NULL);
        temp += health.value.f;
        WriteProcessMemory(hProc, (LPVOID)ptr, &temp, entry.size, NULL);
    }
    else
    {
        int temp;
        ReadProcessMemory(hProc, (LPVOID)ptr, &temp, entry.size, NULL);
        temp += health.value.i;
        WriteProcessMemory(hProc, (LPVOID)ptr, &temp, entry.size, NULL);
    }
Цитата Сообщение от Случай#2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void Trainer::printMessage()
{
std::cout << "\t\t* *   "
          << cfg->hotkey.health.name
          << " - increase "
          << getAmmount(cfg->health)
          << " Health         * *" << std::endl;
// print other data like a armour, money, etc...
}
 
inline std::string Trainer::getAmmount(Config::ammount& ammount)
{
    return (ammount.type == "Float") ? std::to_string(ammount.value.f) : std::to_string(ammount.value.i);
}
Во втором случае же для вывода чтобы преобразовать в строку написал вспомогательную функцию getAmmount, возвращающую строку. Думаю здесь можно и перегрузить, например так:
Цитата Сообщение от toString
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
std::ostream & operator<<(std::ostream & _stream, Points const & p)
{
    if (this->type == "Float")
        return _stream << p.f;
    else
        return _stream << p.i;
}
zss,
Цитата Сообщение от zss Посмотреть сообщение
А почему бы не сделать так
C++
1
2
3
4
5
6
7
template<typename T>
void Points::doSomething()
{
    increaseValue<T>(this);
     Sleep(500);
     decreaseValue<T>(this);
}
Компилятор ругается на health.doSomething() и armour.doSomething()
main.cpp(45): error C2672: "Points::doSomething": не найдена соответствующая перегруженная функция
main.cpp(45): error C2783: void Points::doSomething(void): не удается составить аргумент шаблон для "T"
main.cpp(31): note: см. объявление "Points::doSomething"


Вобщем, получилось много текста, а вопрос в целом звучит так: Как объявить функцию без аргументов, возвращающую разные типы данных?
C++
1
2
3
4
5
6
7
type_to_return Myfunction()
{
    if (blablah) 
         return 100; // int
 
    return 250.5; // float
}
Миниатюры
Перегрузка внутри класса  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru