Форум программистов, компьютерный форум 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 подробнее

Показать сообщение отдельно
moskitos80
 Аватар для moskitos80
39 / 39 / 0
Регистрация: 04.10.2011
Сообщений: 128
26.07.2012, 18:07  [ТС]     Компилятор просит указать const в конструкторе
Цитата Сообщение от alsav22 Посмотреть сообщение
в вашем коде явный конструктор копирования не нужен
И тут вы правы, если убрать собственный конструктор, то всё работает на ура. Тут возникает вопрос (Да простят меня модераторы) вот упрощённый листинг того же кода:

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
#include <iostream>
 
using namespace std;
 
////////////////////////////////////////////////////////////////////////////////
 
class Fract {
      private : 
              int num, // числитель
                  den; // знаменатель
      public :
             Fract(Fract& fr) : 
                     num (fr.getNum()),
                     den (fr.getDen())
             {}
             Fract(int n, int d) : 
                     num (n),
                     den (d)
             {}
             int getNum(void);
             int getDen(void);
             Fract Fract::lowterms(void);
};
 
int Fract::getNum(void){
    return this->num;
}
int Fract::getDen(void){
    return this->den;
}
Fract Fract::lowterms(void){
      // ... 
      return Fract(this->num, this->den); // здесь компилятор выдает ошибку
}
 
////////////////////////////////////////////////////////////////////////////////
 
int main()
{
   Fract fr1(5,8), fr2(fr1);
   
   cout << endl;   
   system("PAUSE");
   return EXIT_SUCCESS;
}
Я обозначил место, где появляется ошибка... довольно непонятная (убрано путь к файлу и номера строк):

In member function `Fract Fract::lowterms()':
no matching function for call to `Fract::Fract(Fract)'
candidates are: Fract::Fract(Fract&)


Но как это не найдено !? Если у меня явно в коде определен конструктор с соответствующей сигнатурой:

C++
1
2
3
4
5
6
... код ...
Fract(Fract& fr) : 
     num (fr.getNum()),
     den (fr.getDen())
{}
... код ...
А если этот конструктор убрать то всё работает нормально. Здесь то что не так?
 
Текущее время: 05:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru