템플릿을 사용하여 컨테이너를 직접 만드는 작업을하고 있습니다. 내가 사용해야하는 컨테이너는 Smaph라고 불리며, 두 쌍의 숫자를 가져 와서 다양한 기능을 수행합니다. 이 과제에 대한 헤더 파일 만 만들 수 있습니다. 저는 하나의 템플릿 인자를 취하는 단일 링크 된 클래스 슬링크를 만들었습니다.C++ 멤버 함수를 잘못 사용했습니다.()을 잊었습니까?
현재 템플리트에 대한 느낌을 얻고이를 사용하는 방법을 배우려고 노력 중이므로 아주 간단한 예를 들어 당신이 나를 도울 수 있기를 바랍니다. 내 단일 링크 된 목록 클래스에서 내 템플릿에 추가 할 push_back 함수가 있습니다. 어떤 이유에서든 컴파일 타임 오류가 발생하여 멤버 함수의 사용이 잘못되었습니다 (push_back).()을 잊었습니까? 누군가가 왜이 오류가 발생하는지 설명 할 수 있습니까? 감사합니다.
template <typename T>
class slink {
private:
struct node {
T datum;
struct node *next;
};
node *head, *tail;
public:
slink() : head(0), tail(0) {
}
~slink() {
clear();
}
void push_back(const T &datum) {
node *p = new node;
p->datum = datum;
p->next = 0;
if (!tail)
head = p;
else
tail->next = p;
tail = p;
}
template <typename Tfirst, typename Tsecond>
class Smaph {
public:
Smaph();
~Smaph();
Smaph(const Tfirst a, const Tsecond b) {
std::pair<Tfirst, Tsecond> pair1(a, b);
s.push_back(pair1);
}
private:
slink<std::pair<Tfirst, Tsecond> > s();
};
그리고 마지막으로, 나의 주 나의 프로그램을 테스트합니다. 지금 당장하고 싶은 일은이 두 숫자를 내 Smaph를 통해 단일 링크 된 목록에 추가하는 것입니다.
int main() {
Smaph<int, double> s(3, 6.3);
}
잘못된 라인, 전체 오류 메시지를 게시하는 것이 도움이 될 것입니다. – zneak
[Vexing parse] (http://stackoverflow.com/q/1424510/1084416) 등 –