월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C++
문자열 포인터, 인티저 포인터
인터저로 포인터 정의하면 예를 들어서int a[] = {1,2,3}하고a만 출력해보면 a가 사실상 포인터이기때문에 첫번째 항의 주소만 출력되는데문자열 포인터에서char b[] = "jack"에서똑같이 b만 출력하면 왜 j의 주소가 출력이 안되고 jack이 다 나오는 건가요 ?
- 미해결홍정모의 따라하며 배우는 C++
NULL, nullptr, \0 헷갈립니다!
마지막에 풀어보라고 하신 문제 푸는데while break조건으로*ptr == nullptr*ptr == \0*ptr == NULL이렇게 3가지에서 2.는 이해가 가는데요,a.1했을때 안되는 이유하고 b. ptr == nullptr 하면 뒤에 이상하게 나오는 이유하고 c. nullptr이 포인터상에서 아예 없는값을 의미하는지 궁금합니다.d. 또 3번에서는 NULL이 문자열에서 아예 없는값을 의미하는게 맞는지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
string length
string a("Hello, World");cout << a.length() << endl;이렇게 하면 12가 나오는데여기서 12는 빈칸(Hello, 와 World 사이에 있는 것)이 포함된 건가요 아님 World뒤에 있는 nullptr이 포함되어서 12인가요?Hello,는 6글자 World는 5글자인데 12가 나온 게 헷갈려서요..
- 미해결홍정모의 따라하며 배우는 C++
오류
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이 오류는 어떤건가요?
- 미해결홍정모의 따라하며 배우는 C++
실행 방법
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.CTRL + F5 (start without debugging)을 하게되면main_chapter11.cpp가 실행되는게 아니라 계속 source.cpp 파일이 실행됩니다.변경하려면 어떻게 해야할까요?clean solution을 하면 되는걸까요?
- 미해결홍정모의 따라하며 배우는 C++
비쥬얼 스튜디오 같은계정 내용공유?
제가 노트북으로도 하고 데스크탑으로도 비쥬얼스튜디오 사용하는데요, 노트북에서 한걸 이어서 데스크탑에서도 하고 싶은데 내용 공유(?) 같은건 안되나요 ? 윈도우 계정은 같은걸 쓰고 있습니다
- 해결됨홍정모의 따라하며 배우는 C++
inline이 들어가면 실행이 안 되는데 이유가 뭔가요?
//Calc.h #pragma once #include <iostream> class Calc { private: int m_value; public: Calc(int init_value); Calc& add(int value); Calc& sub(int value); Calc& mult(int value); void print(); };//Calc.cpp #include "Calc.h" inline Calc::Calc(int init_value) : m_value(init_value) {} inline Calc& Calc::add(int value) { m_value += value; return *this; } inline Calc& Calc::sub(int value) { m_value -= value; return *this; } inline Calc& Calc::mult(int value) { m_value *= value; return *this; } inline void Calc::print() { std::cout << m_value << std::endl; } //main.cpp #include "Calc.h" int main() { Calc cal(10); cal.add(10).sub(1).mult(2).print(); Calc(10).add(10).sub(1).mult(2).print(); return 0; }이렇게 했는데요..Calc.cpp에서 inline들을 다 빼버리니까 실행은 되는데 빼야지만 실행이 된다고 설명은 안 하신 거 같은데빼야지만 실행이 되는 게 맞는 건가요 ? 그 이유가 무엇일까요 ? ..
- 미해결홍정모의 따라하며 배우는 C++
새로운 프로젝트 만들어서 하는데 실행이 안되요
수업에 있는 코드 따라하려고 새로운 프로젝트(새로운 소스파일 말고) 아예 만들어서 실행 시켰는데 전에 만들었던 프로젝트에 있던 int main부터 시작하더라구요 디버깅해보니까 이거 왜이런거죠 ? 저는 새로운 프로젝트만 실행시키고 싶은데
- 해결됨홍정모의 따라하며 배우는 C++
공부방식
제가 강의를 듣고 있는데 너무 내용이 많아서요 ..저는 문제풀이를 하면서 해야 궁극적으로 실전능력이 는다고 생각하는데 다듣고 하면 앞에거 다까먹을것 같고 어떻게 활용해야 하나요 ?
- 미해결홍정모의 따라하며 배우는 C++
강의 자료
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 유튜브 무료강의 영상에서 보면 무료 강의자료가 있던데 이 강의는 강의자료가 따로 없는거 맞을까요?
- 미해결홍정모의 따라하며 배우는 C++
a.out
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. a.out 디렉터리로 이동해서 터미널에서 ./a.out 을 치라고 하는 의미를 모르겠습니다. a.out으로 들어가면 이렇게 뜹니다.
- 미해결홍정모의 따라하며 배우는 C++
맥북 visual studio code 에서 헤더파일은 어떻게 만드나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. visual studio code에서는 헤더파일을 어떻게 만드나요?
- 미해결홍정모의 따라하며 배우는 C++
맥북 visual studio code 링킹
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 말씀해주신대로 g++ add.cpp main.cppclang++ add.cpp main.cpp 2가지 다 해도 안됩니다.... 어떻게 해야할까요?윈도우 노트북을 사야할까요?공부하고 싶은데 맥북 visual studio code로는 따라가기가 너무 힘드네요....
- 미해결홍정모의 따라하며 배우는 C++
namespace 관련 질문
결과값은 잘 나오는데 컴파일 관련 오류가 있는 것 같습니다해결방법 알 수 있을까요??
- 해결됨홍정모의 따라하며 배우는 C++
너무 옛날 강의 ..
이거 보니까 2018년도에 녹화하신건데 지금 2023년 한달뒤면 2024년인데 내용이 너무 뒤쳐지지는 않을까여 ? 저는 초보자라서 잘 모르는데 고수분들이 보기에는 어떤것 같나여 ?? 답변좀 부탁드립니다!
- 미해결홍정모의 따라하며 배우는 C++
맥북 터미널로 실행
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 말씀해주신 유튜브 링크로 맥북 visual studio code 세팅중인데 터미널에서 실행하는 방법대로 하니 저는 안되는데 왜 그럴까요....? zsh : command not found: code 로 뜨네요
- 미해결홍정모의 따라하며 배우는 C++
vscode 에서 c++을 사용하면 솔루션은 안만들어도 되는건가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.vscode 에서 c++을 사용하면 솔루션은 안만들어도 되는건가요? 솔루션 안에 프로젝트를 만들라고 하는데 vscode에서는 프로젝트만 만들면 되는거 맞을까요?
- 미해결홍정모의 따라하며 배우는 C++
vsc에서 bool b3{ true }; 빌드 관련질문
vsc에서 bool b3{ true };이 코드에서 빌드 오류가 나는거 같은데b3뒤에 ;이 빠졌다고 나오는데 어떻게 해결하는지 잘 모르겠습니다
- 미해결홍정모의 따라하며 배우는 C++
상속-base class undefined
안녕하세요, 제가 며칠 잠을 못자서 그런지 계속 상속에서 에러가 나네요..개념도 다시 한번 정비하려고 강의도 정주행 중인데, 며칠 째 못풀어서 답답해서 일단 질문드립니다.ㅠ조금 긴 코드이지만 염치 불구하고 혹시 도와주신다면 정말로 감사할 것 같습니다.우선, menu를 userMenu에서 상속받고 몇가지 변수들도 추가하고자 하여, virtual function-override를 사용해보았습니다.그런데 계속해서Severity Code Description Project File Line Suppression StateError C3668 'UserMenu::handleEvents': method with override specifier 'override' did not override any base class methodsSeverity Code Description Project File Line Suppression StateError C2504 'Menu': base class undefined이와 같은 오류가 납니다.virtual function 선언 때 0을 부여해도 마찬가지입니다. // 우선 userMenu.h 와 .cpp 입니다. #pragma once #ifndef USER_MENU_H #define USER_MENU_H #include "menu.h" #include "gameDisplay.h" class UserMenu : public Menu { public: UserMenu(); void u_run(); void handleEvents() override; protected: sf::Text subText; sf::Text buttonSecond; sf::RectangleShape borderSecond; sf::Text buttonThird; sf::RectangleShape borderThird; }; #endif // .cpp #include "userMenu.h" UserMenu::UserMenu() : Menu() { subText.setString(" - user mode - "); subText.setFont(font); subText.setCharacterSize(30); subText.setFillColor(sf::Color::White); sf::FloatRect managerRect = subText.getLocalBounds(); subText.setPosition((window.getSize().x - managerRect.width) / 2, (window.getSize().y - managerRect.height) / 2 - 170); // 2 buttonSecond.setString("2. WORD GAME"); buttonSecond.setFont(font); buttonSecond.setCharacterSize(50); buttonSecond.setFillColor(sf::Color::White); sf::FloatRect buttonSecondRect = buttonSecond.getLocalBounds(); // left // down buttonSecond.setPosition((window.getSize().x - buttonSecondRect.width) / 2, (window.getSize().y - buttonSecondRect.height) / 2 + 10); // 3 buttonThird.setString("3. PROFILE & USERS"); buttonThird.setFont(font); buttonThird.setCharacterSize(50); buttonThird.setFillColor(sf::Color::White); sf::FloatRect buttonThirdRect = buttonThird.getLocalBounds(); // left // down buttonThird.setPosition((window.getSize().x - buttonThirdRect.width) / 2, (window.getSize().y - buttonThirdRect.height) / 2 + 110); window.draw(buttonSecond); window.draw(buttonThird); u_run(); } void UserMenu::u_run() { while (window.isOpen()) { createDisplay(); createButton(); handleEvents(); render(); } } void UserMenu::handleEvents() { sf::Event event; while (window.pollEvent(event)) { sf::Vector2f mousePos(event.mouseButton.x, event.mouseButton.y); if (event.type == sf::Event::Closed) { window.close(); } else if (event.type == sf::Event::MouseButtonPressed) { if (buttonSecond.getGlobalBounds().contains(mousePos)) { playClick(); std::cout << "Second button clicked! Opening new window..." << std::endl; window.close(); GameDisplay gameDisplay; gameDisplay.run(); } else if (buttonThird.getGlobalBounds().contains(mousePos)) { playClick(); std::cout << "Third button clicked! Opening new window..." << std::endl; window.close(); CurrentProfile currentProfile; // later must be replaced currentProfile.run(); } } else if (event.type == sf::Event::MouseMoved) { if (buttonFirst.getGlobalBounds().contains(sf::Vector2f(event.mouseMove.x, event.mouseMove.y))) { buttonFirst.setFillColor(sf::Color::Red); } else { buttonFirst.setFillColor(sf::Color::White); } if (buttonSecond.getGlobalBounds().contains(sf::Vector2f(event.mouseMove.x, event.mouseMove.y))) { buttonSecond.setFillColor(sf::Color::Red); } else { buttonSecond.setFillColor(sf::Color::White); } if (buttonThird.getGlobalBounds().contains(sf::Vector2f(event.mouseMove.x, event.mouseMove.y))) { buttonThird.setFillColor(sf::Color::Red); } else { buttonThird.setFillColor(sf::Color::White); } } } }// menu.h와 .cpp입니다. #ifndef MENU_H #define MENU_H #include "loginSystem.h" #include "currentProfile.h" class Menu { public: Menu(); void run(); void playClick(); sf::SoundBuffer clickBuffer; sf::Sound clickSound; virtual void createDisplay(); void createButton(); virtual void handleEvents(); // = 0 해도 결과는 같음(에러) void render(); sf::RenderWindow window; sf::Font font; sf::Text mainText; sf::Text backButton; sf::RectangleShape borderRect; bool isManager; sf::Font m_font; sf::Text buttonFirst; sf::RectangleShape borderFirst; }; #endif #include "menu.h" Menu::Menu() : window(sf::VideoMode(1400, 700), "Menu Display") { } void Menu::run() { while (window.isOpen()) { createDisplay(); createButton(); handleEvents(); render(); } } void Menu::createDisplay() { if (!font.loadFromFile("font/hangthedj.ttf")) { std::cerr << "Failed to load font!" << std::endl; } mainText.setString("let's practice together"); mainText.setFont(font); mainText.setCharacterSize(70); mainText.setFillColor(sf::Color::White); sf::FloatRect textRect = mainText.getLocalBounds(); mainText.setPosition((window.getSize().x - textRect.width) / 2, (window.getSize().y - textRect.height) / 2 - 240); // Back button backButton.setString("BACK"); backButton.setFont(font); backButton.setCharacterSize(30); backButton.setFillColor(sf::Color::White); sf::FloatRect loginButtonRect = backButton.getLocalBounds(); // left // down backButton.setPosition((window.getSize().x - loginButtonRect.width) - 250, (window.getSize().y - loginButtonRect.height) / 2 + 180); borderRect.setSize(sf::Vector2f(loginButtonRect.width + 10, loginButtonRect.height + 10)); borderRect.setPosition((window.getSize().x - loginButtonRect.width) - 253, (window.getSize().y - loginButtonRect.height) / 2 + 180); borderRect.setFillColor(sf::Color::Transparent); borderRect.setOutlineThickness(4); borderRect.setOutlineColor(sf::Color::White); } void Menu::createButton() { if (!m_font.loadFromFile("font/RobotoSlab-Bold.ttf")) { std::cerr << "Failed to load font!" << std::endl; } // 1 buttonFirst.setString("1. VOCABULARY"); buttonFirst.setFont(m_font); buttonFirst.setCharacterSize(50); buttonFirst.setFillColor(sf::Color::White); sf::FloatRect buttonFirstRect = buttonFirst.getLocalBounds(); // left buttonFirst.setPosition((window.getSize().x - buttonFirstRect.width) / 2, (window.getSize().y - buttonFirstRect.height) / 2 - 70); } void Menu::playClick() { if (clickBuffer.loadFromFile("media/click_sound.wav")) { clickSound.setBuffer(clickBuffer); clickSound.play(); } else { std::cerr << "Failed to load click sound file!" << std::endl; } } void Menu::handleEvents() { sf::Event event; while (window.pollEvent(event)) { sf::Vector2f mousePos(event.mouseButton.x, event.mouseButton.y); if (event.type == sf::Event::Closed) { window.close(); } else if (event.type == sf::Event::MouseButtonPressed) { if (buttonFirst.getGlobalBounds().contains(mousePos)) { playClick(); std::cout << "First button clicked! Opening new window..." << std::endl; window.close(); // insert run } else if (backButton.getGlobalBounds().contains(mousePos)) { playClick(); std::cout << "BACK button clicked! Opening previous window..." << std::endl; window.close(); LoginSystem loginSystem; loginSystem.run(); } } else if (event.type == sf::Event::MouseMoved) { if (buttonFirst.getGlobalBounds().contains(sf::Vector2f(event.mouseMove.x, event.mouseMove.y))) { buttonFirst.setFillColor(sf::Color::Red); } else { buttonFirst.setFillColor(sf::Color::White); } if (backButton.getGlobalBounds().contains(sf::Vector2f(event.mouseMove.x, event.mouseMove.y))) { backButton.setFillColor(sf::Color::Red); borderRect.setOutlineColor(sf::Color::Red); } else { backButton.setFillColor(sf::Color::White); borderRect.setOutlineColor(sf::Color::White); } } } } void Menu::render() { window.clear(); window.draw(mainText); window.draw(backButton); window.draw(borderRect); window.draw(buttonFirst); window.draw(borderFirst); window.display(); }
- 미해결홍정모의 따라하며 배우는 C++
부모 클래스의 멤버변수가 상속될 때 초기화
class Child :public Mother { private: double m_d; public: Child() :m_d(1.0), m_i(10) { cout << "child constructor" << endl; } };위 코드에서 오류가 나는 이유가 Child객체를 실행할 때 m_d와 m_i에 메모리를 주는 과정에서 child객체가 m_i가 무엇인지 인식을 하지 못하기 때문에 에러가 난다고 이해했는데 맞게 생각한걸까요?