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

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

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

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

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

Q&A

解決済

1回答

1591閲覧

コンパイルエラー [パラメーターと互換性がありません]の対処法が知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

OpenGL

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

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

0グッド

0クリップ

投稿2021/12/15 04:10

提示コードですが以下のエラー出ます。これはどいういう意味なのでしょうか?変数ではエラーになりませんがアドレスを指定する形にするとエラーになります。提示コードのCanvas部最下部///コメント部内部のコードです。

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー (アクティブ) E0167 型 "const std::vector<FrameWork::CharacterTexture, std::allocator<FrameWork::CharacterTexture>> *" の引数は型 "std::vector<FrameWork::CharacterTexture, std::allocator<FrameWork::CharacterTexture>> *" のパラメーターと互換性がありません AAEditor C:\Users\〇〇\Desktop\AAEditor\AAEditor\Canvas.cpp 152

cpp

1 2// ##################################### 固定長文字列 描画 ##################################### 3void FrameWork::D2::Text::Draw(glm::vec2 pos, std::vector<FrameWork::CharacterTexture>* character)const 4{ 5//長いため割愛 6}

#####Canvas部

cpp

1 2void Canvas::Renderer(glm::mat4 view)const 3{ 4 5 const glm::vec4 frameColor = glm::vec4(0, 150, 0, 255); //枠組 6 const glm::vec4 backGroundColor = glm::vec4(150, 150, 150, 255); //背景色 7 8 backGround->Draw(position,position + ((glm::vec2)size * (float)fontSize),FrameWork::GetRGBColor(backGroundColor),0.0f); 9 10 //Y 11 for (int i = 0; i < (size.x * fontSize) + fontSize; i += fontSize) 12 { 13 line->Draw(glm::vec2(position.x + i, position.y), glm::vec2(position.x + i, position.y + size.y * fontSize), FrameWork::GetRGBColor(frameColor), 1, 0.0f); 14 } 15 16 //X 17 for (int i = 0; i <= (size.y * fontSize) + fontSize; i += fontSize) 18 { 19 line->Draw(glm::vec2(position.x, position.y + i), glm::vec2(position.x + size.x * fontSize,position.y + i), FrameWork::GetRGBColor(frameColor), 1, 0.0f); 20 } 21 22 /* 23 //文字描画 24 for (int y = 0; y < size.y; y++) 25 { 26 for (int x = 0; x < size.x; x++) 27 { 28 text.DrawCharacter(character->at(y * size.x + x).pos, (y * size.x) + x); 29 } 30 } 31 */ 32//texture = std::vector<CharacterTexture> texture; 33///////////////////////////////////////////////////////// 34 text->Draw(glm::vec2(100,100),&texture); 35///////////////////////////////////////////////////////// 36} 37

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

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

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

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

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

guest

回答1

0

ベストアンサー

Text::Draw(glm::vec2 pos, std::vectorFrameWork::CharacterTexture* character)

これの第2引数は const ではない.
それに対して,これを呼んでいるらしい箇所

text->Draw(glm::vec2(100,100),&texture);

texture が const になっているのでしょう.


Text::Draw(glm::vec2 pos, std::vectorFrameWork::CharacterTexture* character)

こいつが引数のポインタ character が指す先をいじくり回す(変更する)ことが無いのであれば,
この引数自体を const にすればよいのでは.

投稿2021/12/15 04:27

fana

総合スコア11632

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

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

fana

2021/12/15 04:30

Draw なるメソッドの名前からして,引数の指す先を変更するような処理ではないであろうから, 引数が 非const であることが間違いだと思う. ポインタやら参照やらを引数に取る場合,そいつが 関数/メソッド 内で変更されないのであれば常に const にすべき.
fana

2021/12/15 04:34

適当に void F( int *p ){} //非constなポインタを引数に取る関数 を書いて,これを int a = 7; const int *cp = &a; //const F(cp); とか呼ぶコードを書いてみれば同じエラーを体験できる.
退会済みユーザー

退会済みユーザー

2021/12/15 06:36 編集

texture変数はconstではないのですがDraw()関数の引数にconstを付けたら動きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問