C++ 如何重载访问类属性的结构运算符?

C++ 如何重载访问类属性的结构运算符?,c++,C++,我想在结构中重载+运算符以实现连接运算符。为此,我需要访问插入结构的一些类成员(matrix和route),如下面的代码所示 MLP.h class MLP{ private: std::vector<int> route; std::vector<std::vector<tCost>> cost; double **matrix; ... } typedef struct s

我想在结构中重载+运算符以实现连接运算符。为此,我需要访问插入结构的一些类成员(
matrix
route
),如下面的代码所示

MLP.h

class MLP{
     private:
          std::vector<int> route;
          std::vector<std::vector<tCost>> cost;
          double **matrix;

     ...
}
typedef struct subsequenceCost{
     int w;
     double t;
     double c;

     int first,
         last;

     subsequenceCost operator+(const subsequenceCost& other) const{
          return subsequenceCost{
               w + other.w,
               t + matrix[route[last]][route[other.first]] + other.t,
               c + other.w*(t + matrix[route[last]][route[other.first]]) + other.c,
               first,
               other.last,
          };
     }
}tCost;

我已经尝试
extern
我将使用的MLP对象,并将
subsequenceCost
结构声明为
friend
,这样我就可以访问它的私有成员,但是没有用,因为MLP是
tCost
的组成部分。有什么想法吗?

fwiw反对使用
运算符+
进行串联的常见论点是
+
应该是可交换的,而串联不是。我不明白
MLP
子序列成本之间的关系是什么。谁的操作员需要访问哪个成员?请不要在C++中使用<代码> TyPufFrase。C是必需的,C++中是冗余的。只需编写
struct subsequenceCost{…}
结构tCost{…}
并一致使用一个名称。
矩阵
MLP
的非静态成员。您希望引用哪个实例的
矩阵
subsequenceCost
实例不包含对
MLP
实例的任何引用。@Evg none。当操作符的行为显而易见并且没有意外时,如果这两个条件都不成立,那么使用有意义的名称的方法更好