はじめまして。BBAです。
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <glui.h>
#include glut.h
#include <math.h>
#pragma comment (lib,glui32.lib)
#define PI 3.14159
using namespace std;
/* グローバル変数としてx1, y1, y2を定義 */
double x1 = 0.0;
double y1 = 0.03;
double y2 = 0.0;
void CUBE(double X0, double X1, double Y0, double Y1, double Y2, double Z0,
double Z1)
{
/* 直方体を作るプログラム */
}
void equation(void)
{
・
・
・
CUBE(-1.0, 0.0, 0.0, y1, 0.0, 0.0, 1.0)
CUBE(0.0, x1, 0.0, y1, y2, 0.0, 1.0)
・
・
・
}
int main(int argc, char* argv[])
{
・
・
・
cout << x1, y1, y2を入力してください。\n;
cin >> x1 >> y1 >> y2;
・
・
・
}
error C2365: 'y1' : 再定義; 以前の定義は '関数' でした。
error C2664: 'CUBE' : 4 番目の引数を 'double (double)' から 'double' に変換でき
ません。コンテキストはオーバーロードされた関数の非不明瞭を考慮しません。
error C2664: 'CUBE' : 4 番目の引数を 'double (double)' から 'double' に変換でき
ません。コンテキストはオーバーロードされた関数の非不明瞭を考慮しません。
error C2679: 二項演算子 '>>' : 型 'double (__cdecl *)(double)' の右オペランドを
扱う演算子が見つかりません (または変換できません)。
このように、main関数の中でcin >> x1 >> y1 >> y2として値を入力させようとしている
のですが、なぜかy1だけがエラーが出てしまいます。
y1という関数を作ったわけではないのですが。
y1の部分をyやyyyなどに変更するとエラーが出ません。
この原因お分かりになりますでしょうか?
環境:WinXP Microsoft Visual Studio .NET 2003 MFC
y1はmath.hにあるBessel 系関数らしいです。
→変数名y1をあきらめるのが最善。
Blueさんありがとうございます。
ベッセル関数についてネットで調べたところ、y0,ynもダメなようですね。
y2, y3, y4・・・は使えるんですよね?
y2 y3 は使える
j0 j1 jn は使えない (j2 j3 は使える)
C++ 限定でよければ無名 namespace を使うことで j0 j1 や y0 y1 という名前を
グローバル変数というか無名 namespace 内静的変数として使える。
まあグローバル変数を使わないのが一番。
本当にそんな(意味のわからない名前の)グローバル変数が必要かどうかを再検討。
tetrapodさんありがとうございます。
とても助かりました。