teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

クラスのオブジェクトを追加

2021/08/27 19:42

投稿

Montake963
Montake963

スコア1

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,8 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
+ C++で関数を他のファイルから実行すること。
3
- ue4でプログレスバーを他のファイルから実行できるようにしたいです。
4
+ ue4でプログレスバーを他のファイルから実行できるようすること
5
+
4
6
  以下のファイルでは、
5
7
  1.GamePlay.hでAdd1(float Aという関数を宣言。
6
8
  2.GamePlay.cppでAdd1(float A)という関数を定義。
@@ -90,6 +92,7 @@
90
92
 
91
93
  public:
92
94
  virtual void NativeTick(const FGeometry& MyGeometry, float InDeltaTime) override;
95
+ UGamePlay Kansuu; //追加
93
96
  };
94
97
  ```
95
98
 
@@ -103,6 +106,7 @@
103
106
  Super::NativeConstruct();
104
107
 
105
108
  Add1(0.5f); //エラー
109
+ Kansuu.Add1(0.5f); //追加
106
110
  }
107
111
  ```
108
112
 
@@ -117,6 +121,29 @@
117
121
  2つ目のエラーは調べてもよくわからす、、、
118
122
  Add1(0.5f)を消せばコンパイルは正常終了する。
119
123
 
124
+ ###追記
125
+ 頂いた意見やURLを元にクラスオブジェクト?なるものを追加しました。
126
+
127
+ ```C++
128
+ //Test.h
129
+ UGamePlay Kansuu; //オブジェクトを生成(一番下の行に追加)
130
+ ```
131
+ ```c++
132
+ //Test.cpp
133
+ Add1(0.5f); //削除
134
+ Kansuu.Add1(0.5f); //関数の実行(同じところに追加)
135
+ ```
136
+
137
+ ###結果
138
+ ビルドは成功し、エラーも出ませんでしたが、ビルドが終了した瞬間 Unreal Engine がクラッシュし、プロジェクトは起動しなくなりました。
139
+ 以降別のプロジェクトで試した結果、他ファイル(今回はTest.h)でオブジェクトを生成するとクラッシュすることが分かりました。
140
+ 頂いたURLの情報では同じファイル内でやっていたことを2つのファイルで行ったのが悪かったのでしょうか。
141
+ ファイルから別のファイルにある関数を実行できるコードの例などを頂けると幸いです。
142
+
143
+
144
+ ######クラッシュレポートの内容
145
+ 致命的なエラー:[ファイル:D:/ build / ++ UE5 / Sync / Engine / Source / Runtime / CoreUObject / Private / UObject / UObjectGlobals.cpp] [行:2612] UObject(const FObjectInitializer&)コンストラクターが呼び出されましたが、オブジェクトではありません これは現在、NewObjectで構築されています。 たぶんあなたはそれをスタック上に構築しようとしていますが、それはサポートされていません。
146
+
120
147
  ### 補足情報
121
148
 
122
149
  Microsoft Visual Studio C++ 2019