템플릿 클래스 비교 오류(C2678)

익명 사용자의 이미지


find랑 remove함수에서 인자로 받은 매개변수랑 템플릿 클래스를 비교하려고 하니

if (elem[i] == anElem) 부분에서

C2678 이항 '==': 왼쪽 피연산자로 'T' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다.

라는 오류가 나네요 ㅠㅠ

왜 그런가요? 비교가 되어야 뭘 하고 말고 하는데 ㅠㅠ 해결 방법은 뭘까요?

#include <iostream>
#include <string>
using namespace std;
 
class Complex {
private:
	float real, imaginary;
public:
	Complex(float _real, float _imaginary) : real(_real), imaginary(_imaginary) {};
};
 
class MyString {
private:
	const char *str;
public:
	MyString():str(""){}
	MyString( const char *_str) : str(_str) {}
};
 
template <class T, int size>
class List {
	T *elem;
	int size;
	int currentSize;
public:
	List() : currentSize(0) {}
	List(int _size) : size(_size), currentSize(0) { elem = new T[_size]; }
	List(const List& another) : size(another.size), currentSize(another.currentSize) {
		elem = new T[size];
		for (int i = 0; i < currentSize; i++) {
			elem[i] = another.elem[i];
		}
	}
	int add(const T &anElem) {
		elem[currentSize] = anElem;
		return currentSize++;
	}
 
 
	void find(const T &anElem) {
		for (int i = 0; i < currentSize; i++) {
			if (elem[i] == anElem) {
				cout << "exist" << endl;
			}
			else {
				cout << "not exist" << endl;
			}
		}
	}
	void remove(const T &anElem) {
		for (int i = 0; i < currentSize; i++) {
			if (elem[i] == anElem) {
				for (int j = i; j < (currentSize - 1); j++) {
					elem[j] = elem[j + 1];
				}
			}
			else {
				cout << "not exist" << endl;
			}
		}
	}
	void remove(const int location) {
		for (int j = location; j < (currentSize - 1); j++) {
			elem[j] = elem[j + 1];
		}
	}
 
	List operator = (const List& L){
		for (int i = 0; i < currentSize; i++) {
			L.elem[i] = elem[i];
		}
	}
};
 
 
int main() {
	List<Complex, 100> cList;
	List<MyString, 200> sList;
 
	int i1 = cList.add(Complex(0, 0));
	cList.add(Complex(1, 1));
	int i2 = sList.add("abc");
	sList.add("def");
	cList.find(Complex(1, 0));
	sList.find("def");
	cList.remove(i1);
	sList.remove("abc");
 
	List<MyString, 200> s2List(sList);
	List<MyString, 200> s3List;
	s3List.add("123");
	s3List = s2List;
	s3List.remove("def");
}

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.