C++ Error: default argument given for ...

조회수 80회

StringWrapper.cpp 의 write 과 readline 부분에서 에러가 발생하는데, 과제에서 저 부분은 프로토타입으로 이미 나와있던 부분이라 그대로 넣었습니다.

이 에러 어떻게 고칠 수 있을까요? 감사합니다.

main.cpp
#include <iostream>
#include "ThinArrayWrapper.h"
#include "ArrayWrapper.h"
#include "StringWrapper.h"
#include <stdexcept>

int main(){
    /*
    SuperThinArrayWrapper SuperThinArrayWrapper;

    for (int n = 0; n < 20; n++){
        SuperThinArrayWrapper.array[n] = (n + 1) * 10; };

    SuperThinArrayWrapper.print_array (SuperThinArrayWrapper);

    ThinArrayWrapper ThinArrayWrapper;

    ThinArrayWrapper.fill_array_v0 (ThinArrayWrapper);
    ThinArrayWrapper.print_array (ThinArrayWrapper);

    ThinArrayWrapper.fill_array_v1 (ThinArrayWrapper);
    ThinArrayWrapper.print_array (ThinArrayWrapper);

    ThinArrayWrapper.print_array (ThinArrayWrapper.fill_array_v2(ThinArrayWrapper));
    */

    /*
    ArrayWrapper catch_example_array{20};
    for (int i = 0; i < catch_example_array.get_size(); ++i){
        catch_example_array.set(i, (i+1));
    }
    int selected_index = 0;
    while (selected_index >= 0){
        std::cout << "Enter an index to print the item.  (-1 to stop): ";
        std::cin  >> selected_index;
        if (selected_index != -1){
            try{
                int value = catch_example_array.get (selected_index);
                std::cout << "The item at index " << selected_index
                          << " is " << value << '\n';
            }
            catch (const std::out_of_range&){
                std::cout << "The index " << selected_index 
                          << " is not a valid index.\n";
                std::cout << "Valid indices are 0 to "
                          << catch_example_array.get_size() - 1
                          << '\n';
                // Reset to allow the loop to continue if index was negative.
                selected_index = 0;  
            }
        }
    }
    */

    char myString[]{ "string" };

    StringWrapper StringWrapper(myString);
    std::cout << StringWrapper.get(1);
    char exampleChar[]{"i"};
    StringWrapper.set(1, exampleChar);
    std::cout << StringWrapper.get(1);



    return 0;
}
StringWrapper.h
#ifndef STRINGWRAPPER_H
#define STRINGWRAPPER_H
#include <iostream>

class StringWrapper{
    public:
        StringWrapper (const char *myString);
        void set (int position, const char *myString);
        char get (int position);
        void write (std::ostream& strm=std::cout) const;
        void readline (std::istream& strm=std::cin, char delim='\n');

    const static int max_capacity = 262144;
    private:
        char myString[40];
};


#endif
StringWrapper.cpp
#include "StringWrapper.h"
#include <cstring>
#include <stdexcept>
#include <iostream>

StringWrapper::StringWrapper (const char *myString){
    strncpy(StringWrapper::myString, myString, sizeof(myString));
}

void StringWrapper::set (int position, const char *myString){
    if ( position > strlen(StringWrapper::myString))
        throw std::out_of_range{"Array index out of bounds."};
    StringWrapper::myString[position] = *myString;
}

char StringWrapper::get (int position){
    if ( position > strlen(StringWrapper::myString))
        throw std::out_of_range{"Array index out of bounds."};
    return StringWrapper::myString[position];
}

void StringWrapper::write (std::ostream& strm=std::cout) const{

}

void StringWrapper::readline (std::istream& strm=std::cin, char delim='\n'){

}

이미지

1 답변

  • StringWrapper.cpp 파일 안에 있는 아래의 코드가 문제입니다.

    void StringWrapper::write (std::ostream& strm=std::cout) const{
    
    }
    
    void StringWrapper::readline (std::istream& strm=std::cin, char delim='\n'){
    
    }
    

    위의 코드를 아래와 같이 수정하세요.

    void StringWrapper::write(std::ostream& strm) const {
    
    }
    
    void StringWrapper::readline(std::istream& strm, char delim) {
    
    }
    
    • 결과

    이미지

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.