我有一个类似于下面的头文件:
class Model {
private:
struct coord {
int x;
int y;
} xy;
public:
....
coord get() const {
return xy;
}
};
在另一个文件中(假设 ModelObject 存在):
struct c {
int x;
int y;
void operator = (c &rhs) {
x = rhs.x;
y = rhs.y;
};
} xy;
xy = ModelObject->get();
编译器抛出一个错误,指出没有已知的从 coord 到 c 的转换。 我相信这是因为它不知道坐标类型,因为它是在类头文件中声明的。我可以通过在类外声明结构来解决这个问题,但我想知道是否可以按照我现在的方式去做,或者这是否通常被认为是不好的做法
最佳答案
您需要一个隐式转换运算符,将 Model::coord
转换为 c
。有关如何执行此操作的信息,我建议查看 C++ Implicit Conversion Operators .
此外,当您提到“它不知道类型,因为它在一个类中”时,您将使用 Model::coord
作为对外界的结构类型(只要 coord
是公开的,在您当前的情况下它不是)。
关于c++ - 从类方法返回结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10151264/