質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

2回答

1153閲覧

ポインタの配列のエラー

santaro

総合スコア18

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/01/10 05:33

編集2019/01/10 07:08

C++で以下のようなプログラムを書いているのですが、

glm::vec3 t1 = cent + axis * (*scopePtr)[idx] * 300.0;

この行でエラーが出てしまって、コンパイルできません。いろいろデバッグしていたのですが、
「(*scopePtr)[idx]」ここで以下の様なエラーが出てしまいます。なにが間違っているのでしょうか?

std::__1::vector<float, std::__1::allocate<float> >::operator[](unsigned long) [inslined]

vector<float> *scopePtr; scopePtr = ptr; /*外部で宣言された vector<float> *ptr を代入*/ for (int i = 0;i < pts.size() - 1;i++){ glm::vec3 cent = pts[i]; glm::vec3 axis = pts[i] - pts[i+1]; axis.rotate(90, glm::vec3(0.0,1.0,0.0)); axis.normalize(); int idx = (sizeof(scopePtr) * (float)i / (float)pts.size()); glm::vec3 t1 = cent + axis * (*scopePtr)[idx] * 300.0; glm::vec3 t2 = cent - axis * (*scopePtr)[idx] * 300.0; glVertex3d(t1.x, t1.y, t1.z); glVertex3d(t2.x, t2.y, t2.z); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/01/10 05:36

エラーが出るなら、エラーメッセージをそのまま提示しましょう
cateye

2019/01/10 06:46

>(float)i / (float)pts.size() これってfloatにする必要有るんですか? ポインタ(scopePtr)を宣言して、本体は何処に?
guest

回答2

0

vec3はfloatだけど300.0がdoubleなのでテンプレートの型があわなくてうまくいかない問題じゃないでしょうか。300.0fにしてみてください。

Scaling a vec3

投稿2019/01/10 10:09

crhg

総合スコア1175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こうじゃなくて?

glm::vec3 t1 = cent + axis * scopePtr[idx] * 300.0;

投稿2019/01/10 07:18

kasa0

総合スコア578

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

santaro

2019/01/10 08:26

それですと以下の様な文法的なエラーが出てしまいます、、、 > Invalid operands to binary expression ('vec3' and 'vector<float>')
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問