gpt4 book ai didi

c++ - 类模板 - 找不到合适的运算符方法

转载 作者:行者123 更新时间:2023-11-30 01:45:28 30 4
gpt4 key购买 nike

我正在尝试使用类模板和运算符覆盖在 C++ 中实现自己的集合。

我的 MySet.h 文件中有以下代码:

#include "stdafx.h"
#pragma once
#include <iostream>
#include <string>
using namespace std;
#define DEFAULT_LEN 10

template <class T> class MySet
{
public:
MySet(int len = DEFAULT_LEN)
{
elements = new T[len];
count = 0;
}

~MySet()
{
delete elements;
}

MySet<T> operator+(T &element)
{
cout << "Some code here!"; //deleted to simplify code, the problem is that this method is not seen in main
return MySet<T>();
}

string writeSet()
{
string result = "";
for (int i = 0;i < count; i++)
{
result += elements[i] + ", ";
}
return result;
}

private:
T* elements;
int count;
};

这是我的主要内容:

#include "stdafx.h"
#include "MySet.h"

int main()
{
MySet<int> a = MySet<int>(10);
cout << a.writeSet();
a = a + 2;
a = a + 3;
a = a + 4;
cout << a.writeSet();
return 0;
}

不幸的是,我在编译这些行时遇到了问题:

a = a + 2;

.输出是:

1>c:\path\main.cpp(11): error C2679: binary '+': no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
1> c:\path\myset.h(22): note: could be 'MySet<int> MySet<int>::operator +(T &)'
1> with
1> [
1> T=int
1> ]

这怎么可能?据我了解,MySet<T> operator+(T &element)应该足够了,因为 T 型。我错过了什么?

最佳答案

它必须是:

MySet<T> operator+(const T &element)

关于c++ - 类模板 - 找不到合适的运算符方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34567904/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com