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

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

Войти
Регистрация
Восстановить пароль
 
yol
10 / 10 / 0
Регистрация: 13.10.2012
Сообщений: 155
#1

передача параметра в функцию - C++

26.04.2013, 05:36. Просмотров 362. Ответов 7
Метки нет (Все метки)

Столкнулся с муторной проблемой передачи параметра в функцию.
Суть задания такая, что нужно изобрести велосипед написать собственный контейнер, в который будут помещаться фигуры. Вот место где выходит эта самая ошибка: "аргумент типа shapes* несовместим с параметром типа shapes*", делал вроде все правильно (даже попробовал вместо shapes -- int и к удивлению все получилось).

C++
1
2
3
shapes* p=0;
p=new square;
obj.enqueue(p); //ТУТ ВЫЛАЗИТ ОШИБКА
Та самая процедура:
C++
1
2
3
4
5
6
7
8
9
void queue::enqueue(shapes* s)  //добавить элемент (в конец списка)
{
    link* top=0;
    last->cur=s;
    top=last->next; //перехват верхушки очереди
    last->next=new link; //указатель на следующий объект
    last=last->next;    //переходим к месту для следующего (в будущем) объекта
    last->next=top; //сохраняем указатель на начало очереди
};
Класс квадрат (square), является производным от фигуры (shapes).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2013, 05:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос передача параметра в функцию (C++):

Передача параметра в функцию - C++
Проблема заключается в следующем. Есть функция, вот её прототип. void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int...

Передача параметра в функцию класса - C++
Здравствуйте. Столкнулся с проблемой. Почему переменная "x" не становится равна 25? #include <iostream> using namespace std; ...

Передача файла в функцию в качестве параметра - C++
Здравствуйте! Подскажите, как передать файловый поток в функцию? int main() { ifstream fin("my file.txt"); ... ...

Передача потока как параметра в функцию - C++
Дорогие форумчане! Повторяю пример из книжки, пока остановился из-за ошибки. //Программа "Функция ввода вопросов, объявление" ...

Передача массива в функцию, как параметра - C++
Создать массив размерностьюN(описать константу и задать размер по умолчанию равный 10). Разработать процедуру заполняющую массив,...

Передача файла в функцию в качестве параметра - C++
Имеется такой код, который, по идее, должен создавать файл с записями и кое-как их потом преобразовывать. Проблема в том, что файл не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
vxg
Модератор
3155 / 1957 / 218
Регистрация: 13.01.2012
Сообщений: 7,484
26.04.2013, 09:55 #2
и где ошибка?
yol
10 / 10 / 0
Регистрация: 13.10.2012
Сообщений: 155
26.04.2013, 10:12  [ТС] #3
Цитата Сообщение от vxg Посмотреть сообщение
и где ошибка?
Ну вот, здесь:
C++
1
obj.enqueue(p);
VS10 выдает ошибку: аргумент типа shapes* несовместим с параметром типа shapes*
vxg
Модератор
3155 / 1957 / 218
Регистрация: 13.01.2012
Сообщений: 7,484
26.04.2013, 10:56 #4
если квадрат производный от фигуры и, как мы видим по тексту указатель на квадрат отлично приводится к указателю на фигуру, то вызов функции принимающей в качестве аргумента указатель на фигуру должен пройти успешно даже в случае если мы передадим ей указатель на квадрат. здесь же мы передаем ей указатель на фигуру, то есть то что она ждет - проблемы где-то в другом ровном месте.
yol
10 / 10 / 0
Регистрация: 13.10.2012
Сообщений: 155
26.04.2013, 12:02  [ТС] #5
Цитата Сообщение от vxg Посмотреть сообщение
если квадрат производный от фигуры и, как мы видим по тексту указатель на квадрат отлично приводится к указателю на фигуру, то вызов функции принимающей в качестве аргумента указатель на фигуру должен пройти успешно даже в случае если мы передадим ей указатель на квадрат. здесь же мы передаем ей указатель на фигуру, то есть то что она ждет - проблемы где-то в другом ровном месте.
я все внимательно просмотрел, но к сожалению не нахожу "неровных" мест.
Сам по себе код нормальный, обработка фигур осуществлялась без проблем, но как только я модифицировал код, чтобы использовать контейнер, вот тут я и застрял...
может у кого есть, хоть какие-нибудь, идеи?
vxg
Модератор
3155 / 1957 / 218
Регистрация: 13.01.2012
Сообщений: 7,484
26.04.2013, 12:05 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class shapes
{
public:
  int x;
};
 
class square:
  public shapes
{
public:
  int y;
};
 
class queue
{
public:
    void enqueue(shapes* s) {}
};
 
queue obj;
shapes* p=0;
p=new square;
obj.enqueue(p); //ошибок нет, где она у вас?
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.04.2013, 12:09 #7
yol, покажите определение класса queue
yol
10 / 10 / 0
Регистрация: 13.10.2012
Сообщений: 155
26.04.2013, 12:10  [ТС] #8
всё! я разобрался, всем спасибо за помощь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2013, 12:10
Привет! Вот еще темы с ответами:

Передача массива в функцию в качестве параметра - C++
Всем привет! Файл с реализацией: int Init_can::Send(int* msgdata) { //Send canmsg_t tx; ULONG ulWritten; ...

Передача параметра по указателю в виртуальную функцию - C++
Добрый вечер и с наступающим всех Новым Годом! условие задачи такое: Мышь (абстрактный) Вход: x,y – начальные s – чувствительность ...

Передача параметра, выделенного в куче, в функцию - C++
Доброго времени суток. Возник такой вопрос. Пусть имеется некоторый класс, под объект которого выделяется память: SomeClass pClass =...

Передача двумерного массива, как параметра в функцию - C++
дан двумерный массив и его сортировка, я записал это все как комментарии помогите пожалуйста записать эту программу через параметры...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.04.2013, 12:10
Ответ Создать тему
Опции темы

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