Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
GotoFreeMan
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 20
#1

Не могу обратиться к методу класса в функции - C++

09.12.2011, 21:07. Просмотров 711. Ответов 2
Метки нет (Все метки)

Добрый день. При написании программы возникла проблема - в функции не могу обратиться к методу класса: компилятор выдаёт ошибку "passing 'const ROADS' as 'this' argument of 'char ROADS::ret_rt()' discards qualifiers".
Вот описание класса.
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
class ROADS                     //Класс дорог
{
    private:
    long double X0, Y0, X1, Y1, radius, alpha, omega;//Координаты начала, конца или центра окружности, радиус, начальный и конечный угол, ширина полосы 2 метра
    long double PointOfGrav, PARK;                   //Коэфициент притяжения
    int minspeed,maxspeed;                           //Максимально и минимально допустимые скорости
    char roadtype;                                   //Кольцо или линия
    public:
    char ret_rt(){return roadtype;};
};
В main объявляю массив объектов следующим образом
int main()
{...
int NumOfRoad=numberroad(inputfile);
ROADS ROAD[NumOfRoad];
...}
И наконец суть - функция, в которую я передаю указатель на массив объектов класса дорог
void distribution(const ROADS* road[], const int nor, CARS* cardis[], const int kolcar)
{
    long double sum=0;
    const int cnstkolcar=kolcar;
    for (int i=0; i<nor;i++)//Вычисляем общую длину дорог
    {
        char ch = road[i]->ret_rt();//В этой строчке компилятор выдаёт вышеприведённую ошибку
        switch (ch)
        ...
Пожалуйста, подскажите в чём проблема и если можно, то способ её решения. Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2011, 21:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу обратиться к методу класса в функции (C++):

Класс: как обратиться к методу производного класса через итератор на базовый класс? - C++
Есть абстрактный и два порожденных. Хочу создать например list&lt;Base*&gt; list1; затем добавляю себе в список: ...

Не могу обратиться к Privat члену класса из ф-и Friend. Почему? - C++
не нашел ответ на свой вопрос... есть класс class Product { char cmName, cmType; double cmPriceIn, cmPriceOut; ...

Как обратиться к методу класса из внешней функции? - C++
Имеется простой класс Employee с методами GetAge() - возвращает возраст, и SetAge(int age). Как сделать так, чтобы работали функции...

Как обратиться к функции класса, который находится в листе? - C++
Как обратиться к функции класса, который находится в листе? В классе есть функция Move. #include &lt;list&gt; using namespace std; ...

Как из другой функции обратиться к членам класса окна? - C++
Здравствуйте! Вобщем в VC6 у меня есть класс окна, зовется CMyDlg. Так вот по нажатию на кнопку создается нить (thread) API'шной...

Как обратиться к методу объекта? - C++
static classA **mas; static int l = 0; mas = new Guest*; ifstream f(&quot;gs.txt&quot;); if (f) { while (!f.eof()) { f &gt;&gt; p &gt;&gt; name; ...

2
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.12.2011, 21:59 #2
Вы пытаетесь вызвать неконстантную функцию через указатель на константу.
const ROADS* road[] - что вот это? константный массив на указатели? или может массив на константные указатели? а как выглядит константный массив на неконстантные указатели? Короче, подобная запись лишь запутывает. Везде, где нужно передавать массивы достаточно пользоваться парой аргументов: указатель на начало массива + количество элементов массива. Наличие квадратных скобок мне кажется лишней.
0
DeadRipper
64 / 70 / 3
Регистрация: 25.06.2009
Сообщений: 244
09.12.2011, 22:29 #3
либо сделать функцию в классе константной,по стандарту она получает this-неконстантный
а массив у вас именно из константных классов.

C++
1
 char ret_rt() const {return roadtype;};
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2011, 22:29
Привет! Вот еще темы с ответами:

Вызов метода производного класса через обращение к методу базового класса - C++
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в...

Может ли метод родительского класса обратиться к полю дочернего класса - C++
Может ли метод родительского класса обратиться к полю дочернего класса?

Не удается обратиться к свойству класса из метода класса - C++
Пишу хедер для работы с файлами такой структуры: nametype1 name1 name2 name3 name4 nametype2

Передача указателя на строку методу класса - C++
после того как я изменил содержание указателя name на Nika Gamkrelidze, name в объекте не изменилось. наверное потому что новое значение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru