簡體   English   中英

分配本機C ++結構的CX公共值結構內容

[英]Assign CX public value struct contents of native C++ struct

如果我有兩個這樣的結構:

struct A {
    float a;
    float b;
    float c;
    float d;
}

public value struct B {
    float a;
    float b;
    float c;
    float d;
}

從A轉換為B的最佳方法是什么(反之亦然)。 我可以做些什么: B struct_b = static_cast<B>(A{1,2,3,4})嗎?

支持的方法是通過轉換運算符:

struct A;

public value struct B {
    float a;
    float b;
    float c;
    float d;

internal:
    operator A();
};

struct A {
    float a;
    float b;
    float c;
    float d;

    operator B()
    {
        return B{ a, b, c, d };
    }
};

B::operator A()
{
    return A{ a, b, c, d };
}

請注意,Intellisense可能會抱怨帶有紅色波浪線的operator A()和有關“公共非數據成員”的工具提示,但是您可以忽略它,並且代碼可以編譯。 internal關鍵字的意思是“在C ++中是public但未在WinMD中作為元數據的一部分公開”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM