• CSE207 객체지향 강좌 및 C++ 관련, 누구나 묻고 답하는 게시판 입니다.
  • CSE207 수강생이 아니여도 편안하게 질문하세요.
  • 첨부화일은 이미지 화일 혹은 zip 화일로 업로드 하기를 권합니다.

제목lab12 기본2번 질문입니다2020-05-23 09:32
작성자

#include <iostream>

#include <string>


using namespace std;


// 함수 오버로딩: int sum(int x, int y),

// double sum(double x, double y)

// float sum(float x, float y, float z)

// 함수 오버라이딩 (상속의 특수한 경우 사용)

//void Text::append(string _extra)

//void Fancy::append(string _extra)


class Text {

private:

string text;

public:

Text(string _t) :text(_t) {}

virtual string get() { return text; }

virtual void append(string _extra) { text += _extra; }

};


class FancyText : public Text {

private:

//string text; b접근이 안됨, Base Class에서 private

string left_brac;

string right_brac;

string connector;

public:

// intialization list 는 생성자를 호출할 수 있게 해준다.

FancyText(string _t, string _lb, string _rb, string _con):

Text::Text(_t), left_brac(_lb), right_brac(_rb), connector(_con){}

string get() override { return Text::get();   

       void append(string _extra) override { Text::get()+=_extra;}<------Base type 이 private이라서 Base클라스의 메소드로 받아온 것인데 잘 안되거나 틀린 방법인것 같습니다 어떻게 해야지원하는대로 FancyText 클래스의 text에 _extra를 붙이는 함수로 구성할 수 있을까요



};


int main() {

Text t1("Plain");

t1.append("A");

cout << t1.get() << endl;


FancyText t2("Fancy", "<<", ">>", "***");

t2.append("A");

cout << t2.get() << endl;

}


이렇게 할시 "Fancy"에 t2.append("A")가 적용되지 않습니다.\

화살표로 고민하고 있는 코드 부분을 가리켜 놨습니다.!

댓글
이전lab1 기초적인 질문.2020-05-29
다음vector erase2020-05-10