[완료] C++ 내포 클래스에 대해서...

sinwho의 이미지

#include
using namespace std;

#ifndef QUEUETP_H_
#define QUEUETP_H_

template
class QueueTP
{
private:
enum{Q_SIZE = 10};
class Node
{
public:
Item item;
Node * next;
Node(const Item & i) : item(i), next(0) {}
};
Node * front;
Node * rear;
int items;
const int qsize;
QueueTP(const QueueTP & q) : qsize(0) {}
QueueTP & operator=(const QueueTP & q) {cout << "operator" << endl;return * this;}
public:
QueueTP(int qs = Q_SIZE);
~QueueTP();
bool isempty() const { return items == 0; }
bool isfull() const { return items == qsize; }
int queuecount() const { return items;}
bool enqueue(const Item & item);
bool dequeue(Item & item);

};

template
QueueTP::QueueTP(int qs) : qsize(qs)
{
front = rear = 0;
items = 0;
}

template
QueueTP::~QueueTP()
{
Node * temp;
while(front!=0)
{
temp = front;
front = front->next;
delete temp;
}
}

template
bool QueueTP::enqueue(const Item & item)
{
if(isfull())
return false;
Node * add = new Node(item);
if(add == NULL)
return false;
items++;
if(front ==0)
front = add;
else
rear->next = add;
rear = add;

cout << "add : " << add << endl;
cout << "add->item : " << add->item << endl;
cout << "add->next : " << add->next << endl;
cout << "front : " << front << endl;
cout << "front->item : " << front->item << endl;
cout << "front->next : " << front->next << endl;
cout << "rear : " << rear << endl;
cout << "rear->item : " << rear->item << endl;
cout << "rear->next : " << rear->next << endl << endl << endl;

return true;
}

template
bool QueueTP::dequeue(Item & item)
{
if(front == 0)
return false;
item = front->item;
items--;
Node * temp = fornt;
front = front->next;
delete temp;
if(items == 0)
rear = 0;
return true;
}

#endif

#include"queuetp.h"
#include
using namespace std;

int main()
{

QueueTP sinwho;
sinwho.enqueue(10);
sinwho.enqueue(8);
sinwho.enqueue(6);

return 0;
}

만약 위와 같은 코드가 있고 실행시..

add : 0017ED08
add->item : 10
add->next : 00000000
front : 0017ED08
front->item : 10
front->next : 00000000
rear : 0017ED08
rear->item : 10
rear->next : 00000000

add : 0017EF30
add->item : 8
add->next : 00000000
front : 0017ED08
front->item : 10
front->next : 0017EF30
rear : 0017EF30
rear->item : 8
rear->next : 00000000

add : 0017EF68
add->item : 6
add->next : 00000000
front : 0017ED08
front->item : 10
front->next : 0017EF30
rear : 0017EF68
rear->item : 6
rear->next : 00000000

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.