purin52002 こんにちは、
「私 C++(&日本語)はいまいちです」と言うのを、放棄しておかせていただきます。
よって、この続きをそのままで鵜吞みにしないでくださいませ。
調べたところ、コピーコンストラクタはUE4 のU Class には使えないみたいです(2015/09/09 の時点で)。 このスレッドをご参照
解決方法に関して、
以下の例は上記のスレッドから抜粋しました:
新オブジェクトの宣言:
T* NewObject<T>(UObject * outer, UClass * type, FName name, UObject const* Template)
使用法:
UMyObject * newObject = NewObject<UMyObject>(someOtherObject, MyObject::StaticClass(), NAME_None, templateObject);
(someOtherObject = TextureRenderTarget2D)かな?
こんにちは
UTextureRenderTarget2D*をメンバ変数に持つ構造体を作りたいと考えています。
アクタにシーンキャプチャを取り付け、アクタの見ている画像から構造体を作りたいのですが、
コンストラクタ内での処理をどうすればよいかわかりません。
コンストラクタの引数は const UTextureRenderTarget2D* としているためポインタをそのままコピーすることはもちろん、実体をコピーしようとするも(コピーコンストラクタのせい?)コピーできない状況です。
どのようにすればメンバ変数に値を設定できるでしょうか?
返信が遅れてしまい申し訳ありません
つまりMyStructという構造体のコンストラクタ内でNewObjectを呼び出して、その結果をメンバ変数に代入すればよいということでしょか?
paperbag
(paperbag)
4
構造体の定義を下記のような感じにしてみてはいかがでしょうか?
// 構造体宣言
USTRUCT()
struct PROJECTNAME_API FExampleStruct
{
GENERATED_USTRUCT_BODY()
UPROPERTY()
UTextureRenderTarget2D* RenderTarget;
FExampleStruct()
: RenderTarget(nullptr)
{}
FExampleStruct(UTextureRenderTarget2D* RenderTarget)
{
->RenderTarget = RenderTarget;
}
};
ExampleActor.h
UCLASS()
class PROJECTNAME_API AExampleActor : public AActor
{
GENERATED_BODY()
public:
AExampleActor();
virtual void BeginPlay() override;
protected:
UPROPERTY()
FExampleStruct ExampleStruct;
UPROPERTY()
USceneCaptureComponent2D* SceneCaptureComponent;
};
ExampleActor.cpp
void AExampleActor::BeginPlay()
{
if (SceneCaptureComponent == nullptr)
return;
if (SceneCaptureComponent->TextureTarget == nullptr)
return;
ExampleStruct = FExampleStruct(SceneCaptureComponent->TextureTarget);
}