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

Компилятор просит указать const в конструкторе - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ MessageBox API http://www.cyberforum.ru/cpp-beginners/thread629083.html
MessageBox API: не получаеться обработать выбор. Мой код: int SELECT = MessageBox(hwnd, _T("Вы действительно хотите завершить работу программы? ВНИМАНИЕ! В случае завершения работы программы, клиенты не смогут подключиться."), _T("Завершение работы"), MB_OKCANCEL | MB_ICONQUESTION); if (SELECT = MB_OK) { PostQuitMessage(0); }
C++ Перегрузка потокового оператора (<<). Выдает адрес вместо значения Сабж. Все компелится нормально. Если делать << void то работает ок см комменты если делать класса std::ostream& то возвращает 16чное значение. Заранее спасибо #ifndef Point_HPP // anti multiply including gates #define Point_HPP #include <sstream> http://www.cyberforum.ru/cpp-beginners/thread629067.html
C++ Реализовать шаблонный класс
В общем требуется реализовать шаблонный класс FixedArray<T,N> FixedArray - абстракция вокруг T Использование выглядит как то так: FixedArray<std::vector, 8> myArr1 = {1, 2, 3, 4}; FixedArray<std::string, 8> strArr = {"a", "b", "c", "d"};
stdlib.h - quicksort C++
Идея такова: отсортировать массив A очень быстрым методом Хоара. Пробовал в stdlib.h делать QuickSort - ничего не получилось. Все значения элементов - до 263-1. Т.е. влазят в тип long. Помогите отсортировать!
C++ KeyDown обрабатывает только символы http://www.cyberforum.ru/cpp-beginners/thread629012.html
Всем привет. Собственно сам вопрос, когда я вызываю функцию (пишу на WinApI, но вопрос из основ c++) Она реагирует только на буквы, цифры, а мне нужно ещё VK_LEFT, VK_RIGHT. Но почему то эта функция их не обрабатывает, вопрос почему. void CMovingBallDlg::KeyD(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) { switch (wP) { case (VK_LEFT)://сообщение не обрабатывается {...
C++ Написать dll для дальнейшего использования в программах на других языках как правильно написать dll чтоб ей можно было пользоваться программам на других языках, например, на delphi подробнее

Показать сообщение отдельно
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
26.07.2012, 18:47     Компилятор просит указать const в конструкторе
Допустим, так получится
C++
1
2
3
4
5
6
Fract Fract::lowterms(void)
{
    //...
    Fract temp(this->num, this->den);
    return temp;
}
А временный безымянный объект не получается преобразовать в ссылку (Fract во Fract&), отсюда и ошибка. Честно, не до конца понимаю почему так, буду рад если кто-то пояснит, в чем суть такого безымянного объекта. Вот тут тоже ошибка... пишет, что это rhs, и ссылку им инициализировать нельзя.
C++
1
Fract & ref = Fract(this->num, this->den);
Зато можно константную ссылку:
C++
1
const Fract & ref = Fract(this->num, this->den);
С учётом этого, можно переписать код так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
 
using namespace std;
 
////////////////////////////////////////////////////////////////////////////////
 
class Fract {
      private : 
              int num, // числитель
                  den; // знаменатель
      public :
             Fract(const Fract& fr) : // конструктор принимает константную ссылку
                     num (fr.getNum()),
                     den (fr.getDen())
             {}
             Fract(int n, int d) : 
                     num (n),
                     den (d)
             {}
             
             Fract(){};
             int getNum(void) const;
             int getDen(void) const;
             Fract lowterms(void);
};
 
int Fract::getNum(void) const{
    return this->num;
}
int Fract::getDen(void) const{
    return this->den;
}
Fract Fract::lowterms(void){
    // ... 
 
    return Fract(this->num, this->den);
}
 
////////////////////////////////////////////////////////////////////////////////
 
int main()
{
   Fract fr1(5,8), fr2(fr1);
   
   cout << endl;   
 
}
 
Текущее время: 04:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru