C++中 error C2872: “count”: 不明确的符号

lokua 2015-06-14 12:33:26
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <GL/glut.h>
#include <GL\GL.h>
#include <GL\GL.h>
#include <iostream>
using namespace std;

int count = 0; //用于保存控制点个数
int Vx, Vy; //用于保存鼠标位置
double X0; double Y0; //第1个控制点
double X1; double Y1; //第2个控制点
double X2; double Y2; //第3个控制点
double X3; double Y3; //第4个控制点

//画线算法
void drawpixel(float X1, float Y1, float X2, float Y2)
{
glBegin(GL_LINES);
glVertex2f(X1, Y1);
glVertex2f(X2, Y2);
glEnd();
glFlush();
}

//Bezier曲线算法
void Bezier(double X0, double Y0,
double X1, double Y1,
double X2, double Y2,
double X3, double Y3)
{
double x, y, X, Y;
x = X0; y = Y0;
for (double t = 0.0; t <= 1.0; t = t + 0.001)
{
X = x; Y = y;
x = (1 - t)*(1 - t)*(1 - t)*X0 + 3 * t*(1 - t)*(1 - t)*X1 + 3 * t*t*(1 - t)*X2 + t*t*t*X3;
y = (1 - t)*(1 - t)*(1 - t)*Y0 + 3 * t*(1 - t)*(1 - t)*Y1 + 3 * t*t*(1 - t)*Y2 + t*t*t*Y3;
drawpixel(X, Y, x, y);
}
}

//绘制曲线
void drawLine(void)
{
glColor3f(0.0f, 0.0f, 0.0f);
glPointSize(1.5);
Bezier(X0, Y0, X1, Y1, X2, Y2, X3, Y3);
}

//绘制控制点
void drawPoints()
{
glPointSize(4.0);
glColor3f(0.0f, 0.0f, 1.0f);
glBegin(GL_POINTS);
glVertex2f(Vx, Vy);
cout << "第" << count << "个控制点" << "(" << Vx << "," << Vy << ")";
glEnd();
glFlush();
}

//绘图
void draw()
{
if (count <= 4 && count > 0)//当输入控制点小于4个时绘制点
{
drawPoints();
}
if (count == 4)//当输入控制点达到4个时绘制曲线
{
drawLine();
}
}

void display()
{
glColor3i(0, 0, 0);
draw();
glutSwapBuffers();
}

//鼠标事件,当鼠标点击时提取鼠标位置作为Bezier曲线控制点
void MouseClick(int button, int action, int xMouse, int yMouse)
{
if (button == GLUT_LEFT_BUTTON && action == GLUT_DOWN)
{
if (count == 4)//当已经存在4个控制点继续点击屏幕则重新画图
{
count = 0;
glClear(GL_COLOR_BUFFER_BIT);
}

if (count < 4)//当控制点不足4个时分别绘制4个控制点
{
switch (count)
{
case 0:
X0 = xMouse;
Y0 = 500 - yMouse;
Vx = X0;
Vy = Y0;
break;
case 1:
X1 = xMouse;
Y1 = 500 - yMouse;
Vx = X1;
Vy = Y1;
break;
case 2:
X2 = xMouse;
Y2 = 500 - yMouse;
Vx = X2;
Vy = Y2;
break;
case 3:
X3 = xMouse;
Y3 = 500 - yMouse;
Vx = X3;
Vy = Y3;
break;
}
count++;
glutPostRedisplay();//刷新画布
}
}
}

//初始化
void init()
{
glClearColor(1.0, 1.0, 1.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-1.0, 500, 0.0, 500);
}

//主程序入口
int main(int argc, char *argv[])
{
glutInit(&argc, argv);

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);

glutInitWindowPosition(100, 100);

glutInitWindowSize(500, 500);

glutCreateWindow(" 交互式Bezier曲线绘制 ");

init();

glutDisplayFunc(display);

glutMouseFunc(MouseClick);

glutMainLoop();

return 0;
}




错误 1 error C2872: “count”: 不明确的符号
错误 2 error C2872: “count”: 不明确的符号
...全文
5122 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
水落 2015-06-15
  • 打赏
  • 举报
回复
与命名空间的冲突!
wxf54318 2015-06-15
  • 打赏
  • 举报
回复
if (count <= 4 && count > 0)//当输入控制点小于4个时绘制点 { drawPoints(); } if (count == 4)//当输入控制点达到4个时绘制曲线 上面的if会使下面的得不到执行
苏叔叔 2015-06-15
  • 打赏
  • 举报
回复
试下

::count
lokua 2015-06-14
  • 打赏
  • 举报
回复
count换个类型名就成功了,估计是与iosname里重复了
Isnis-fallen 2015-06-14
  • 打赏
  • 举报
回复
加上名字空间声明
mewiteor 2015-06-14
  • 打赏
  • 举报
回复

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧