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

Создание функции с параметрами - C++

Восстановить пароль Регистрация
 
KokosSPb
32 / 82 / 3
Регистрация: 03.02.2011
Сообщений: 463
28.02.2012, 12:19     Создание функции с параметрами #1
Здравствуйте, есть код
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
#include "stdafx.h"
#include <windows.h>
#include <GL/glut.h>
#pragma comment(lib, "opengl32.lib") //сообщаем линковщику, что мы будет использовать библиотеки opengl32, glu32. 
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glut32.lib")
 
using namespace System;
 
void init(void){
    glClearColor(1.0,1.0,1.0,0.0);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0.0,200.0,0.0,150.0);
}
 
void LineSegment(void){
    int l=2;
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0,0.0,0.0);
    glBegin(GL_LINE_STRIP);
    while(l<200){
        glVertex2i(l,100+rand()%10);
        l++;
    }
    glEnd();
    l++;
    glFlush();
}
 
 
int main(int argc,char** argv)//(array<System::String ^> ^args)
{   
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    glutInitWindowPosition(50,100);
    glutInitWindowSize(400,300);
    glutCreateWindow("OpenGL окошко");
    init();
    glutDisplayFunc(LineSegment);
 
 
    glutMainLoop();
    return 0;
}
всё работает нормально, рисует мне рандомную кривую, всё гуд, но вот если я хочу сделать так - чтоб рисовалась прямая по тем координатам, которые я ввожу (по поводу ввода - другая тема будет создана).
По логике, мне нужно 2 параметра вводить, но переделать функцию следующим образом:
C++
1
2
3
4
5
6
7
8
9
10
11
void LineSegment(int yOld, int yNew){
    int l=50;
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0,0.0,0.0);
    glBegin(GL_LINE_STRIP);
        glVertex2i(l,yOld);
        l++;
        glVertex2i(l,yNew);
    glEnd();
    glFlush();
}
- не получается, пишет ошибку ввода параметров при её вызове.
Что делать?

MS VisualStudio2008
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
28.02.2012, 12:38     Создание функции с параметрами #2
Так не получится, Вы не можете изменить вызов функции LineSegment.
Оставьте его прежним, а yOld и yNew передайте через глобальные переменные
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
28.02.2012, 12:47     Создание функции с параметрами #3
Если это действительно C++, то можно оставить две версии функции. Они будут считаться перегруженными и компилятор сам выберет необходимую в зависимости от того, передаются в нее параметры или нет.
KokosSPb
32 / 82 / 3
Регистрация: 03.02.2011
Сообщений: 463
28.02.2012, 13:21  [ТС]     Создание функции с параметрами #4
Цитата Сообщение от zss2 Посмотреть сообщение
Так не получится, Вы не можете изменить вызов функции LineSegment.
Оставьте его прежним, а yOld и yNew передайте через глобальные переменные
поподробнее
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
28.02.2012, 13:29     Создание функции с параметрами #5
C++
1
2
3
4
5
6
static int yOld,yNew;
void LineSegment(void)
{         
      int l=2;
 
...
KokosSPb
32 / 82 / 3
Регистрация: 03.02.2011
Сообщений: 463
28.02.2012, 14:56  [ТС]     Создание функции с параметрами #6
Цитата Сообщение от zss2 Посмотреть сообщение
C++
1
2
3
4
5
6
static int yOld,yNew;
void LineSegment(void)
{         
      int l=2;
 
...
Пишу
C++
1
2
3
4
5
static int yOld1,yNew1;
yOld1=51;
yNew1=67;
void LineSegment(void){
        int l=2;
выводит кучу
ошибок
error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>.\OpenGL1.cpp(16) : error C2086: int yOld1: переопределение
1> .\OpenGL1.cpp(15): см. объявление 'yOld1'
1>.\OpenGL1.cpp(17) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>.\OpenGL1.cpp(17) : error C2086: int yNew1: переопределение
1> .\OpenGL1.cpp(15): см. объявление 'yNew1'
1>.\OpenGL1.cpp(27) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>.\OpenGL1.cpp(27) : error C2556: int glEnd(void): перегруженная функция отличается от 'void glEnd(void)' только возвращаемым типом
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\GL/gl.h(1226): см. объявление 'glEnd'
1>.\OpenGL1.cpp(27) : error C2373: glEnd: переопределение; различные модификаторы типа
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\GL/gl.h(1226): см. объявление 'glEnd'
1>.\OpenGL1.cpp(28) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>.\OpenGL1.cpp(28) : error C2556: int glFlush(void): перегруженная функция отличается от 'void glFlush(void)' только возвращаемым типом
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\GL/gl.h(1242): см. объявление 'glFlush'
1>.\OpenGL1.cpp(28) : error C2373: glFlush: переопределение; различные модификаторы типа
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\GL/gl.h(1242): см. объявление 'glFlush'
1>.\OpenGL1.cpp(29) : error C2059: синтаксическая ошибка: }
1>.\OpenGL1.cpp(29) : error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
1>.\OpenGL1.cpp(29) : error C2059: синтаксическая ошибка: }
1>.\OpenGL1.cpp(32) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>.\OpenGL1.cpp(32) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)

 Комментарий модератора 
Подобные полотна - под кат!

Добавлено через 2 минуты
Так, тут решил

Добавлено через 17 минут
Спасибо огромное, нашел я свою ошибку
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
28.02.2012, 15:07     Создание функции с параметрами #7
Вне функций код писать НЕЛЬЗЯ, можно только объявить переменные
и присвоить им начальные значения.
C++
1
static int yOld=51,yNew=67;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2012, 15:16     Создание функции с параметрами
Еще ссылки по теме:

Создание массива через функцию с параметрами C++
Создание массива через функцию с параметрами C++
Функции с параметрами C++

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

Или воспользуйтесь поиском по форуму:
KokosSPb
32 / 82 / 3
Регистрация: 03.02.2011
Сообщений: 463
28.02.2012, 15:16  [ТС]     Создание функции с параметрами #8
Да, я уже понял, я для проверки их пихал, ступил просто они мне тут и не нужны, они будут вводиться извне
Yandex
Объявления
28.02.2012, 15:16     Создание функции с параметрами
Ответ Создать тему
Опции темы

Текущее время: 04:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru