在OpenCL C99中,我们可以编写此代码以创建'float2'的新实例:
float f = (float2)(1.f, 2.f);
我的问题是我需要在C++中使用EXACT SAME代码,为此我创建了
一个新的类float2,但在这种情况下似乎未调用以下运算符:
inline float2 operator()(const float a, const float b) { return float2(a, b); }
有人对解决方案有想法吗?

最佳答案

jprice's comment开始,如果您可以更改OpenCL代码的语法,则可以通过在C++代码中定义一个简单的struct来使这两种语言都可以使用:

struct float2 {
  float x, y;
  // define operators here
};

然后您可以执行以下操作,而不是使用上面的“cast-style”语法:
float2 f;
f.x = 1.f; f.y = 2.f;

这将在两个工作。

关于c++ - 模仿C++中的OpenCL float2类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23909389/

10-11 23:14