C++/CLI でコンパイルが通らない原因を教えて下さい。

huahi11115 395 評価のポイント
2025-01-30T00:03:29.28+00:00

イラスト2

下のコードで、(1)、(2) いずれもコンパイルが通りません。解決方法を教えて下さい。

//マネージドクラスの中に、MyStruct1型のメンバーを置き、クラスの外からMyStruct1型のメンバーにアクセスしたい

public ref class MyClass1 {

public:

MyStruct1 ^struct1;// (1)コンパイルが通らない 「C++ 非 マネージド クラスを識別するハンドルは使用できません」

//↑ マネージドクラスのメンバーにマネージド構造体を使ったら何がいけないのですか?

MyStruct1 struct2;// (2)コンパイルが通らない 「マネージド クラスのメンバーを非 マネージド クラス型にすることはできません」

MyClass1() {//コンストラクター

	struct1 = new MyStruct1(0.1F);//コンパイルは通る

}

float p1() {//クラスの外からMyStruct1型のメンバーにアクセス

	return struct1.x;

}

~MyClass1() {//書き方 これで正しいのかも分からない。

	struct1 = nullptr;

	delete struct1;

}
```};

public struct MyStruct1 {//これはマネージド型ではないのか?

public:

float x;

MyStruct1(float _x) {x = _x;} //コンストラクター

C++
C++
C プログラミング言語の拡張機能として作成された高レベルの汎用プログラミング言語。低レベルのメモリ操作機能に加えて、オブジェクト指向、汎用、関数型の機能を備えています。
27 件の質問
{count} 件の投票

承認済みの回答
  1. とっちゃん 710 評価のポイント MVP
    2025-01-30T02:19:42.41+00:00

    public struct MyStruct1 {//これはマネージド型ではないのか?

    方法: クラスと構造体を定義および使用する (C++/CLI) に記述がありますが、Managed 型の struct の定義は以下のように記述します。

    public value struct MyStruct1{ ... }
    
    1 人がこの回答が役に立ったと思いました。

0 件の追加の回答

並べ替え方法: 最も役に立つ

お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。