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

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

新規登録して質問してみよう
ただいま回答率
87.20%
コンパイルエラー

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

C++

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

解決済

「コンパイルエラー」 [〇〇は定義されていない識別子です]の解決方法が知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

コンパイルエラー

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

C++

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

1回答

-2評価

0クリップ

734閲覧

投稿2021/12/28 07:14

編集2021/12/28 07:22

提示コードですがFrameWork.hppのヘッダファイルをインクルードしたソースファイルでその名前空間にあるFrameWork::Textureなどを使うと定義されていない識別子ですというエラーが大量に出るのですがこれは何が原因なのでしょうか?namespaceを明示してもコンパイルエラーになります。

※FrameWork.hppは利用側が利用するヘッダーファイルで
Reousrce.hpp,Resource.cppはフレームワークが利用するコードという設計です。

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー C2065 'CharacterTexture': 定義されていない識別子です

namespace を明示

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー C2039 'CharacterTexture': 'FrameWork' のメンバーではありません AAEditor

イメージ説明

FrameWork/FrameWork.hpp
#ifndef ___FRAMEWORK___HPP___ #define ___FRAMEWORK___HPP___ #include <iostream> #include <vector> #include <GL/glew.h> #include <GLFW/glfw3.h> #include <glm/glm.hpp> #include "../header/Resource.hpp" #include "../header/Window.hpp" #include "../header/Camera.hpp" #include "../header/Sprite.hpp" #include "../header/Vertex.hpp" #include "../header/Simple.hpp" #include "../header/Shape.hpp" #include "../header/Text.hpp" #include "../header/Model.hpp" namespace FrameWork { //Help 関係 #define PI ((float)(3.14159265359)) int GetRandom(int start, int end); float GetAngle(float r); glm::vec2 GetWindowCenter(); glm::vec4 GetRGBAColor(const glm::vec4 rgb); std::vector<char> GetFormatString(const char* args, ...); glm::vec3 GetSurfaceNormal(const glm::vec3 v1, const glm::vec3 v2, const glm::vec3 v3); glm::vec3 GetSurfaceNormal_Normalized(const glm::vec3 v1, const glm::vec3 v2, const glm::vec3 v3); float GetAspect(); // ##################################### ロード関係 ##################################### //ロード関係 //テクスチャファイル typedef struct texture { glm::ivec2 size; //サイズ GLuint ID; //テクスチャハンドル } Texture; //文字 構造体 typedef struct character_texture { GLuint textureID; // グリフのテクスチャID glm::lowp_u8vec2 size; // グリフサイズ glm::lowp_u8vec2 bearing; // グリフのベースライン unsigned short advance; // 次のグリフまでのオフセット wchar_t character; // 文字 glm::vec4 color; //カラー int pixelSize; //ピクセルサイズ glm::vec2 scale; //スケール } CharacterTexture; //サウンドファイル typedef struct sound_file { } SoundFile; typedef struct object_file { std::vector<VertexAttribute> attribute; std::vector<unsigned int> index; } ObjFile; void GenStringTexture(std::vector<CharacterTexture>* character, const char* fontPath, int pixelSize, glm::vec4 color, const char* args, ...); void GenStringTexture_Scale(std::vector<CharacterTexture>* character, const char* fontPath, int pixelSize, glm::vec4 color, glm::vec2 scale, const char* args, ...); CharacterTexture GenCharacterTexture(const char* fontPath, int pixelSize, glm::vec4 color, const char* args, ...); Texture LoadTexture(const char* fileName); //テクスチャーロード std::shared_ptr<std::vector<GLchar>> LoadShader(const char* fileName); //シェーダーロード SoundFile LoadSound(const char* fileName); //サウンドロード FT_Face LoadFont(const char* fileName); //フォントロード std::shared_ptr<FrameWork::ObjFile> LoadObj(const char* filename); // ウインドウコンテキスト 関係 const glm::ivec2 GetWindowSize(); int GetKeyInput(int keyCode); // 初期化 関係 void Init_FrameWork(); std::shared_ptr<FrameWork::Window> GenWindowContext(const glm::ivec2 size, const char* title); std::shared_ptr<FrameWork::Window> GetCurrentContext(); void setCurrentContext(std::shared_ptr<FrameWork::Window> win); }; #endif
Resource.hpp
#ifndef ___RESOURCE_HPP_ #define ___RESOURCE_HPP_ #include <vector> #include <memory> //#include <GL/gl.h> #include <glm/glm.hpp> #include "Init.hpp" #include "Help.hpp" #include "Vertex.hpp" #include "../FrameWork/FrameWork.hpp" namespace FrameWork { } #endif
Resource.cpp
#define _CRT_SECURE_NO_WARNINGS #include "../header/Resource.hpp" #include "../FrameWork/FrameWork.hpp" #include <fstream> #include <vector> #define STB_IMAGE_IMPLEMENTATION #include <stb/stb_image.h> #include "../header/Init.hpp" // ##################################### 単一テクスチャ 生成 ##################################### FrameWork::CharacterTexture FrameWork::GenCharacterTexture(const char* fontPath, int pixelSize, glm::vec4 color, const char* args, ...) { std::vector<char> charText(sizeof(args), '\0'); wchar_t wcharText; //書式指定文字列に変換 va_list va; va_start(va, args); int er = vsprintf_s(charText.data(), charText.size(), args, va); if (er < 0) { std::cerr << "GenCharacterTexture() Error: vsprintf_s(): " << er << std::endl; assert(0); } va_end(va); mbrtowc(&wcharText, &charText.at(0), (size_t)MB_CUR_MAX, nullptr);//wchar_t型文字を生成 FT_Face face = LoadFont(fontPath); //フォントをロード FT_Error err = FT_Set_Pixel_Sizes(face, 0, pixelSize); if (err != 0) { std::cerr << "FrameWork::getGenCharacterTexture() Error: FT_Set_Pixel_Sizes: " << err << std::endl; assert(0); } err = FT_Load_Glyph(face, FT_Get_Char_Index(face, wcharText), FT_LOAD_RENDER); if (err != 0) { std::cerr << "FrameWork::getGenCharacterTexture() Error: FT_Load_Glyph: " << err << std::endl; assert(0); } CharacterTexture ch = { 0, glm::lowp_u8vec2(face->glyph->bitmap.width, face->glyph->bitmap.rows), glm::lowp_u8vec2(face->glyph->bitmap_left, face->glyph->bitmap_top), (unsigned short)face->glyph->advance.x, wcharText, color, pixelSize, glm::vec2(1.0f,1.0f), }; glGenTextures(1, &ch.textureID); glBindTexture(GL_TEXTURE_2D, ch.textureID); glActiveTexture(GL_TEXTURE0); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glTexImage2D ( GL_TEXTURE_2D, 0, GL_RED, face->glyph->bitmap.width, face->glyph->bitmap.rows, 0, GL_RED, GL_UNSIGNED_BYTE, face->glyph->bitmap.buffer ); //テクスチャタイプを設定 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glBindTexture(GL_TEXTURE_2D, 0); return ch; } /* その他。FrameWork.hppの関数定義なのど */
Text.hpp
#ifndef ___TEXT_HPP_ #define ___TEXT_HPP_ #include <iostream> #include <stdio.h> #include <vector> #include <array> #include <stdarg.h> #include <map> #include <glm/glm.hpp> #include "Resource.hpp" #include "../FrameWork/FrameWork.hpp" #include "Help.hpp" #include "Render.hpp" #include "Vertex.hpp" #include <vector> #include <memory> //#include <GL/gl.h> #include <glm/glm.hpp> #include "Init.hpp" #include "Help.hpp" #include "Vertex.hpp" /*######################################################################### # 文字描画クラス 説明 文字を描画する ###########################################################################*/ namespace FrameWork { class Text : public Render { public: Text(); //コンストラクタ ~Text(); //デストラクタ void Renderer(const glm::vec3 position,const std::vector<CharacterTexture>* character)const; private: static std::array<FrameWork::VertexAttribute,6> vertex; static GLuint vao; static GLuint vbo; }; }; #endif

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

episteme

2021/12/28 07:25 編集

> エラー C2065 'CharacterTexture': 定義されていない識別子です namespace を明示してもダメですか? > エラー C2039 'CharacterTexture': 'FrameWork' のメンバーではありません CaracterTexture は 名前空間 Framework にないのでは?
退会済みユーザー

退会済みユーザー

2021/12/28 07:23

'CharacterTexture': 'FrameWork' のメンバーではありません というコンパイルエラーに変わりました。
episteme

2021/12/28 07:26

CharacterTexture の定義されたヘッダは #include されていますか?
退会済みユーザー

退会済みユーザー

2021/12/28 07:27

提示コードのFrameWork/FrameWork.hppに定義されています。
episteme

2021/12/28 07:33

Resource.cpp: > CharacterTexture ch = これを Framework::CharacterTexture ch = としてもダメ?

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

コンパイルエラー

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

C++

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