言語を 1 年以上使用していなかったので、C++ を再び使い始めたばかりなので、しばらくお待ちください。
別のクラスのオブジェクトへの参照を引数として受け取るメソッドを持つクラスがあります。コードは次のようになります: (pastebin の完全なコード)
//Entity.h
namespace xe {
class Entity {...}
}
//Component.h
#include "entity.h"
class Entity;
namespace xe{
class Component
{
public :
void set_parent(Entity&);
private :
Entity* m_parent;
}
}
//Component.cpp
#include "component.h"
xe::Component::set_parent(Entity& entity) { m_parent = &entity;}
//Main.cpp
#include "Entity.h"
#include "Component.h"
int main()
{
Entity entity(1 /*id*/);
Component comp;
comp.set_parent(entity);
}
}
このコードは、次のコンパイル エラーをトリガーします (ビジュアル スタジオ)
error c2664:xe::Component::set_parent(Entity&) : cannot convert parameter 1 from xe::Entity to Entity&
その間、次のコードが実行され、完全に正常にコンパイルされます
void square(int& i)
{
i *= i;
}
int main()
{
int number = 2;
square(number);
std::cout<<number;
}
私が言ったように、私は C++ の専門家ではありませんが、私にとって 2 つの関数の唯一の違いは、square() がプリミティブ データ型 (int) への参照を受け取るのに対し、do_something() は a のインスタンスへの参照を受け取ることです。クラス。クラスオブジェクトを参照で渡すことについて何も見つけることができず、すでにいくつかの代替手段を試しました(参照 const を作成し、Bar& 型の変数を明示的に作成してそれをメソッドに渡します)が、何も機能しなかったので、ここで質問したいと思いました.