小编Ben*_*ang的帖子

类中 C++ 运算符重载的语法

背景

我正在从这门课程中自学 C++ 。我正在尝试使用友元函数(作业 4.2)重载类中的运算符。

编辑

链接的问题没有回答我的问题。该问题的公认解决方案提供了一种在 header + cpp 文件中实现模板的方法(并非全部在同一个文件中)。

事实上,我已经咨询了这个问题,以部分地提出我的情况。

我的尝试

使用方法 2,我几乎可以让我的代码工作(请参阅神秘的错误消息)。事实证明我缺少一个<>. (解决方案手册)。

我试过谷歌搜索,但没有其他人有这种情况

  1. 朋友功能,
  2. 运算符重载,以及
  3. 在模板类中

同时。

我的理由

不应使用类公共函数进行运算符重载,因为调用该函数的对象将被隐式传递,占用一个函数参数。让重载运算符对称(在用法和定义上)是更好的代码风格。

的用法friend是由讲义建议的。

  1. 为什么<>需要?
  2. 在模板化类中进行运算符重载是否有更好的方法?
  3. (可选)如何理解错误消息?

谢谢你。

代码

堆栈.h

#include <iostream>
#include <vector>
using std::cout;
using std::vector;

template <typename T>
class Stack;

template <typename T>
Stack<T> operator+(Stack<T> a, Stack<T> b);

template <typename T>
class Stack { // use default constructors and destructors …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism templates operator-overloading friend

4
推荐指数
1
解决办法
109
查看次数