2014-11-16 4 views
0

C++에서 Insert() 메서드를 오버로드하려고합니다. 여기에 내가 다음 을 마련했다 내 코드이 내 List.cpp이삽입 메서드 오버로드

using namespace std; 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
    //List d,a; 
    List *arr,*temp; 
    arr = new List(10); 
    temp = new List(); 
    arr->insert(1, 3); 
    cout << "Printing array list after inserting: " << endl; 
    arr->printArray(); 
} 

Output: 
Testing Insert method: 

Printing array list after inserting: 
-842150451 


Expected: 
Testing Insert method: 
Printing array list after inserting: 
3 

가정하자

#include "stdafx.h" 
#include "List.h" 
#include <iostream> 
using namespace std; 
List::List(size_t capacity) 
{ 
    data_ = new int[capacity]; 
    capacity_ = capacity; 
    size_ = 0; 
} 
List::~List() 
{ 
    cout << "delete "; 
    delete[] data_; 
} 

void List::insert(size_t position, int value) { 
    if (size_ == capacity_) 
    { 
     resize(2 * capacity_); 

    } 
    if (position >= 0 && position <= capacity_ - 1) 
    { 
     data_[position] = value; 
     size_++; 
    } 

} 
void List::printArray() 
{ 
    size_t i; 
    for (i = 0; i < size_; i++) 
    { 
     cout << data_[i]<<" "; 
    } 

} 

void List::resize(size_t new_size) 
{ 
    int * temp; 
    size_t i; 

    capacity_ = new_size; 
    temp = new int[capacity_]; 
    for (i = 0; i <= size_; ++i) 
    { 
     temp[i] = data_[i]; 
    } 
    delete[] data_; 
    data_ = temp; 
} 

주요 방법 파일을 파일 내 List.h 파일

#ifndef _LIST_H_ 
#define _LIST_H__ 

#include "stdafx.h" 
#include <cstdlib> 
#include <iostream> 

class List 
{ 
public: 
    List(size_t capacity = 5); // constructor - allocates dynamic array 
    ~List(); // destructor 

    void insert(size_t position, int value); 
    void printArray();//Printing Array elements 

private: 
    void resize(size_t new_size); // allocate new larger array 
    int *data_; // dynamic array 
    size_t size_; // size of dynamic array 
    size_t capacity_; // capacity of dynamic array 
}; 

inline int& List::operator [] (size_t pos) 
{ 
    if (pos >= 0 && pos <= size_ - 1) 
    { 
     return data_[pos]; 
    } 
} 
#endif _LIST_H_ 

입니다 만약 내가 arr =[1,2,3,4]; arr->insert(2,-2) 같은 배열을 가지고. 에

arr->insert(1, 3); 

: 출력은 어떻게 당신이 줄을 변경해야합니다

+1

"삽입"이라고하지만 그 코드는 삽입하지 않습니다. –

답변

0

코드를 수정하는 임의의 숫자 대신 삽입 값을 표시하는 이유 arr= [1,2,-2,3,4]

이 하나가 말해 줄 수 있어야한다

arr->insert(0, 3);