小编Dan*_*ahi的帖子

从托管C++到C#的结构列表

首先,我想引用这个问题:在C#和C++之间共享变量.

这似乎是我正在寻找的,但在尝试实现这一点时,我得到了一些错误.

首先这是我的代码:

C++ MyCppWrapper.h

namespace CppWrapping
{
    #pragma pack(1)
    public struct MyPoint
    {
    public: 
        float X;
        float Y;
        float Z;
        unsigned char R;
        unsigned char G;
        unsigned char B;
        unsigned char A;

    }MyPoint_t;
    #pragma pack()

    public ref class MyCppWrapper
    {
    public:
        MyCpplWrapper(void);
        List<MyPoint>^ getData();
    };
};
Run Code Online (Sandbox Code Playgroud)

C++ MyCppWrapper.cpp

List<MyPoint>^ MyCppWrapper::getData()
{
    List<MyPoint>^ temp = gcnew List<MyPoint>();
    for (int i = 0; i < Data.Length; i++)
    {
        PointT& pt = Data.points[i];
        MyPoint holder = MyPoint();
        holder.X = pt.x; …
Run Code Online (Sandbox Code Playgroud)

c# managed-c++ list

7
推荐指数
1
解决办法
1625
查看次数

得到一个没有很多if语句的类

我有一定数量的类继承自抽象类:

abstract public class baseClass
{
    //logics
}

public class child1 : baseClass
{
}

public class child2 : baseClass
{
}
Run Code Online (Sandbox Code Playgroud)

现在我有一些管理类,必须创建这些类中的一个,具体取决于枚举,它将具有相同名称的值,如下所示:

public enum ClassType
{
    child1,
    child2
}

public class Manager
{
    private List<baseClass> _workers;

    public void Initialize(ClassType type)
    {
        //what logics to put here? (resulting in correctChild)
        _workers.Add(correctChild);
    }
}
Run Code Online (Sandbox Code Playgroud)

我在考虑使用typeof,但不知道如何实现它.注意:在这个例子中,它是2个类,但在实际情况下,它是任意数量的类.

c# xna class

3
推荐指数
1
解决办法
145
查看次数

与联盟和结构混淆

我正在使用这个库在PCL(Point Cloud Library,www.pointclouds.org)上开展一个项目.我可以获得我的Kinect正在查看的内容的3D表示.问题是,我正在使用这个结构:

typedef union
{
    struct
    {
            unsigned char Blue;
            unsigned char Green;
            unsigned char Red;
            unsigned char Alpha;
    };
    float float_value;
    uint32_t long_value;
} RGBValue;
Run Code Online (Sandbox Code Playgroud)

我想用这个结构做的是从每种颜色中获取单个数据并将它们放在浮点数中:

float R = someCloud->points[idx].rgba.Red;   
float G = someCloud->points[idx].rgba.Green;  
float B = someCloud->points[idx].rgba.Blue;  
float A = someCloud->points[idx].rgba.Alpha;  
Run Code Online (Sandbox Code Playgroud)

我得到的错误是这样的:

error C2039: 'Red' : is not a member of 'System::UInt32'*
Run Code Online (Sandbox Code Playgroud)

c++ point-cloud-library

1
推荐指数
1
解决办法
216
查看次数

标签 统计

c# ×2

c++ ×1

class ×1

list ×1

managed-c++ ×1

point-cloud-library ×1

xna ×1