c++ new 사용

익명 사용자의 이미지

template
class List {
T* pElems;
int sz;
public:
List() {
pElems = new T[size];
sz = 0;
}

이런식으로 코드를 작성하였는데 no matching function for call to Mystring
이렇게 에러가 뜸니다 어떤 문제가 발생한 걸까요?
여기서 Mystring은 클래스 입니다.

class MyString {
private:
char* str;
public:
MyString(char* str) {
this->str = str;
}
bool operator == (const MyString& s) const {return strcmp(str,s.str);}
friend ostream& operator << (ostream& os, const MyString& M);
void operator = (const MyString& M) const {
strcpy(str,M.str);
return ;
}
};

익명 사용자의 이미지

MyString에 default constructor가 없는데, 매개변수 없이 MyString 객체를 생성하려고 하는군요.
당연히 될 리가 없습니다.

해결책은 크게 두 가지인데,
(1) MyString에 default constructor를 만들던가
(2) MyString을 생성할 때 반드시 매개변수를 제공해 줘야 합니다.

(1)을 어떻게 하는지는 설명할 필요가 없을 것 같고,
(2)를 하는 방법은 아래 예시를 참고하시길.

#include <iostream>
#include <string>
using namespace std;
 
int main() {
	string *s = new string[2]{"hello", "world"};
 
	for (int i=0; i<2; i++){
		cout << s[i] << ' ';
	}
	cout << endl;
 
	delete[] s;
	return 0;
}