I'm using two kinds of vectors (float x,y structs) in my engine.

One us the openGL vector, glm::vec2. We use this basically everywhere.

Recently we added collision with a library called Box2d. This uses b2vec types everywhere.

I want some way to automatically convert from glm::vec2 to b2vec whenever I pass it into a box2d function, instead of doing it manually constantly.

Problem is: At this time I don't have the access to the glm::vec2 or b2vec classes directly. I can't add the conversion constructors to them.

Do I have any other options?

有帮助吗?

解决方案

Unfortunately, automatic conversion operators must be defined as a non-static member function of the class being converted (glm::vec2 in your case).

struct A {};

struct B {
    operator A();
};

Or, switched around, as a constructor for class A.

struct A {
    A(const B&);
};

The only other option is to make a non-member converter function.

struct A {};
struct B {};

A convert_to_A(const B&);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top