Q&A
提示コードですがヘッダーファイルの以下の関数のオーバーロードで以下のError
が出ますこれはなぜでしょうか?一致しない関数とありますが一致しているのですが。参考サイトを参考にオーバロードの可能かどうかを調べましたが可能です。
bool getHitEnter(const std::shared_ptr<Line_Collision> col);
参考サイト:https://monozukuri-c.com/langcpp-function-overload/
Error
shigurechan@shigurechan-System-Product-Name:~/Program/SDLGame/libTest$ sh run.sh g++ -c -MMD -MP ../lib/src/Rectangle_Collision.cpp -o ../lib/obj/Rectangle_Collision.o ../lib/src/Rectangle_Collision.cpp:119:6: error: no declaration matches ‘bool SDL::Rectangle_Collision::getHitEnter(std::shared_ptr<SDL::Line_Collision>)’ 119 | bool SDL::Rectangle_Collision::getHitEnter(const std::shared_ptr<Line_Collision> col) | ^~~ In file included from ../lib/src/Rectangle_Collision.cpp:1: ../lib/src/Rectangle_Collision.hpp:22:14: note: candidates are: ‘bool SDL::Rectangle_Collision::getHitEnter(std::shared_ptr<Line_Collision>)’ 22 | bool getHitEnter(const std::shared_ptr<Line_Collision> col); | ^~~~~~~~~~~ ../lib/src/Rectangle_Collision.cpp:29:6: note: ‘bool SDL::Rectangle_Collision::getHitEnter(std::shared_ptr<SDL::Rectangle_Collision>)’ 29 | bool SDL::Rectangle_Collision::getHitEnter(const std::shared_ptr<Rectangle_Collision> col) | ^~~ In file included from ../lib/src/Rectangle_Collision.cpp:1: ../lib/src/Rectangle_Collision.hpp:14:11: note: ‘class SDL::Rectangle_Collision’ defined here 14 | class Rectangle_Collision : public Component | ^~~~~~~~~~~~~~~~~~~ make: *** [Makefile:33: ../lib/obj/Rectangle_Collision.o] エラー 1 Compile Error shigurechan@shigurechan-System-Product-Name:~/Program/SDLGame/libTest$
Rectangle_Collision.hpp
cpp
1#ifndef ___RECTANGLE_COLLISION_HPP___ 2#define ___RECTANGLE_COLLISION_HPP___ 3 4#include <glm/glm.hpp> 5#include <memory> 6#include "Collision.hpp" 7 8class Line_Collision; 9class Rectangle_Collision; 10class Circle_Collision; 11 12namespace SDL 13{ 14 class Rectangle_Collision : public Component 15 { 16 17 public: 18 Rectangle_Collision(); 19 ~Rectangle_Collision(); 20 21 bool getHitEnter(const std::shared_ptr<Rectangle_Collision> col); 22 bool getHitEnter(const std::shared_ptr<Line_Collision> col); 23// bool getHitEnter(const std::shared_ptr<CircleCollision> col); 24 25 bool getHitStay(const std::shared_ptr<Rectangle_Collision> col); 26// bool getHitStay(const std::shared_ptr<Line_Collision> col); 27// bool getHitStay(const std::shared_ptr<CircleCollision> col); 28 29 bool getHitExit(const std::shared_ptr<Rectangle_Collision> col); 30// bool getHitExit(const std::shared_ptr<Line_Collision> col); 31// bool getHitExit(const std::shared_ptr<CircleCollision> col); 32 33 virtual void Render_Debug(glm::vec4 color); 34 35 glm::vec2 position; 36 glm::vec2 size; 37 private: 38 39 bool isBoxEnter; 40 bool isBoxStay; 41 bool isBoxExit; 42 43 44 bool isLineEnter; 45 bool isLineStay; 46 bool isLineExit; 47 }; 48 49}; 50 51#endif
Rectangle_Collision.cpp
cpp
1#include "Rectangle_Collision.hpp" 2 3#include "SDLGame.hpp" 4#include "Line_Collision.hpp" 5#include "Collision.hpp" 6#include <memory.h> 7#include <glm/glm.hpp> 8 9 10SDL::Rectangle_Collision::Rectangle_Collision() : Component() 11{ 12 isBoxEnter = false; 13 isBoxStay = false; 14 isBoxExit = false; 15} 16 17/*################################################# 18# 矩形 当たった瞬間 19###################################################*/ 20bool SDL::Rectangle_Collision::getHitEnter(const std::shared_ptr<Rectangle_Collision> col) 21{ 22 if(isEnable == true) 23 { 24 if (BoxCollision_Hit(position,size,col->position,col->size) == true) 25 { 26 if(isBoxEnter == false) 27 { 28 isBoxEnter = true; 29 30 return true; 31 } 32 else 33 { 34 return false; 35 } 36 } 37 else 38 { 39 isBoxEnter = false; 40 } 41 } 42 43 return false; 44 45} 46 47/*################################################# 48# 線 当たった瞬間 49###################################################*/ 50 51bool SDL::Rectangle_Collision::getHitEnter(const std::shared_ptr<Line_Collision> col) 52{ 53 if(isEnable == true) 54 { 55 if(LineCollision_Hit(position,position + glm::vec2(size.x,0),col->startPosition,col->endPosition) == true) 56 { 57 if(isLineEnter == false) 58 { 59 isLineEnter = true; 60 61 return true; 62 } 63 else 64 { 65 return false; 66 } 67 } 68 else if(LineCollision_Hit(position,position + glm::vec2(0,size.y),col->startPosition,col->endPosition) == true) 69 { 70 if(isLineEnter == false) 71 { 72 isLineEnter = true; 73 74 return true; 75 } 76 else 77 { 78 return false; 79 } 80 } 81 else if(LineCollision_Hit(position + size,position + size + glm::vec2(0,size.y),col->startPosition,col->endPosition) == true) 82 { 83 if(isLineEnter == false) 84 { 85 isLineEnter = true; 86 87 return true; 88 } 89 else 90 { 91 return false; 92 } 93 } 94 else if(LineCollision_Hit(position + glm::vec2(0,size.y),position + glm::vec2(0,size.y) + glm::vec2(size.x,0),col->startPosition,col->endPosition) == true) 95 { 96 if(isLineEnter == false) 97 { 98 isLineEnter = true; 99 100 return true; 101 } 102 else 103 { 104 return false; 105 } 106 } 107 else 108 { 109 isLineEnter = false; 110 } 111 } 112 113 return false; 114} 115 116 117 118 119 120 121 122 123 124 125SDL::Rectangle_Collision::~Rectangle_Collision() 126{ 127 128} 129
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。