c++ - 从类方法返回结构

标签 c++ struct operator-overloading

我有一个类似于下面的头文件:

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/

相关文章:

c++ - 读取原始套接字 ip header ? C++

c++ - 从指针c++获取数组的大小

c++ - `char * const` 字段被 MSVC (VS2015) 视为 "incompatible with C"

C: malloc,结构错误

c++ - 为什么使用 int 作为后增量运算符重载的参数?

c++ - gcc(v4.1.2 cross-compiler)整数提升问题

c++ - 在 if-else block 中实现类似 SFINAE 的效果

c++ - 不完整的类型,前向声明

python - python 中的模块 `operator` 没有 `rfloordiv`?

c# - 运算符重载多态返回泛型集合