"이전게시판/C, C++"에 해당되는 글 - 23건
- 2018.09.30 c++ 전처리기 region 이란
- 2018.08.29 pragma message 출력창에 내용 출력
- 2018.07.27 Cygwin 설치 설정 방법
- 2018.06.20 서버 파싱 중 이진수 데이터 조합
- 2018.06.16 flyweight(플라이웨이트) 패턴
- 2018.06.05 VisualStudio 줄번호 바로가기 단축키
- 2018.05.30 const와 포인터
- 2018.05.03 C3083 왼쪽의 기호는 형식이어야 합니다 에러 정방선언...
- 2018.04.26 typedef한 자료형의 별명을 리턴값으로 사용시 에러...
- 2018.04.19 프로토콜, 라우터
Post
사용법
#pragma region RegionName
source code ...
#pragma endregion
설명
#pragma region 선언부터 endregion 까지 하나의 소스로 인식한다.
하나의 소스로 인식되면 코드 옆에 - , + 아이콘으로 코드를 한번에 접을 수 있어서 유용하다.
'이전게시판 > C, C++' 카테고리의 다른 글
pragma message 출력창에 내용 출력 (0) | 2018.08.29 |
---|---|
Cygwin 설치 설정 방법 (0) | 2018.07.27 |
서버 파싱 중 이진수 데이터 조합 (0) | 2018.06.20 |
flyweight(플라이웨이트) 패턴 (0) | 2018.06.16 |
VisualStudio 줄번호 바로가기 단축키 (0) | 2018.06.05 |
const와 포인터 (0) | 2018.05.30 |
C3083 왼쪽의 기호는 형식이어야 합니다 에러 정방선언... (0) | 2018.05.03 |
typedef한 자료형의 별명을 리턴값으로 사용시 에러... (0) | 2018.04.26 |
Post
#pragma message(내용)
출력창에 내용을 출력할 수 있는 전처리기 명령문
'이전게시판 > C, C++' 카테고리의 다른 글
c++ 전처리기 region 이란 (0) | 2018.09.30 |
---|---|
Cygwin 설치 설정 방법 (0) | 2018.07.27 |
서버 파싱 중 이진수 데이터 조합 (0) | 2018.06.20 |
flyweight(플라이웨이트) 패턴 (0) | 2018.06.16 |
VisualStudio 줄번호 바로가기 단축키 (0) | 2018.06.05 |
const와 포인터 (0) | 2018.05.30 |
C3083 왼쪽의 기호는 형식이어야 합니다 에러 정방선언... (0) | 2018.05.03 |
typedef한 자료형의 별명을 리턴값으로 사용시 에러... (0) | 2018.04.26 |
Post
구글 프로토콜 버퍼를 Window에서 사용하려고 이것저것 검색하다보니
윈도우에서 리눅스 프로그램을 사용할 수 있는 Cygwin 을 알게되었다.
설치는 어렵지 않았지만 몇가지 삽질했던 것을 적어본다.
1. select Packages 선택 시 Default 만 깔지 말자
Default 선택 설치했는데 bin 폴더에 bash가 없었다..
그래서 그냥 ALL 설치를 했는데 그래도 없는 패키지가 있었다..
2. Choose a Download Site에서 사이트 선택
http://mirror.kakao.com
(다음에서 카카오로 바뀌었다..)
3.
1번과 연속적인 상황인데 정말 중요한 wget이 없었다.
난 분명 all 설치해서 다 선택하고 설치된줄 알았다..
알고보니 아래 그림처럼 wget 검색 시 Web의 1.19.1-2 의 Bin? 을 한번 선택해줘야
네모박스 안이 x표시가 되고 선택이 되는거였다ㅠㅠ....
4. Cygwin Path 설정
제어판 - 시스템 - 시스템 속성 - 고급 - 환경변수 - 시스템 변수 - Path
D:\cygwin64\bin;
라고 입력
cygwin64 은 설치폴더이므로 환경마다 이름이 다를 수 있다
'이전게시판 > C, C++' 카테고리의 다른 글
c++ 전처리기 region 이란 (0) | 2018.09.30 |
---|---|
pragma message 출력창에 내용 출력 (0) | 2018.08.29 |
서버 파싱 중 이진수 데이터 조합 (0) | 2018.06.20 |
flyweight(플라이웨이트) 패턴 (0) | 2018.06.16 |
VisualStudio 줄번호 바로가기 단축키 (0) | 2018.06.05 |
const와 포인터 (0) | 2018.05.30 |
C3083 왼쪽의 기호는 형식이어야 합니다 에러 정방선언... (0) | 2018.05.03 |
typedef한 자료형의 별명을 리턴값으로 사용시 에러... (0) | 2018.04.26 |
Post
'이전게시판 > C, C++' 카테고리의 다른 글
c++ 전처리기 region 이란 (0) | 2018.09.30 |
---|---|
pragma message 출력창에 내용 출력 (0) | 2018.08.29 |
Cygwin 설치 설정 방법 (0) | 2018.07.27 |
flyweight(플라이웨이트) 패턴 (0) | 2018.06.16 |
VisualStudio 줄번호 바로가기 단축키 (0) | 2018.06.05 |
const와 포인터 (0) | 2018.05.30 |
C3083 왼쪽의 기호는 형식이어야 합니다 에러 정방선언... (0) | 2018.05.03 |
typedef한 자료형의 별명을 리턴값으로 사용시 에러... (0) | 2018.04.26 |
Post
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | // ConsoleApplication1.cpp: 콘솔 응용 프로그램의 진입점을 정의합니다. // #include "stdafx.h" #include <vector> using namespace std; class Flyweight { public: struct Stock { int nType; // 0 : 전사 1 : 마법사 int nMaxHP; int nStr; int nDef; }; private: Stock m_stock; public : void SetStock(Stock stock) { m_stock = stock; } Stock& GetStock() { return m_stock; } void Print(int index) { printf("유닛%d Type:%d MaxHP:%d \n", index, m_stock.nType, m_stock.nMaxHP); } }; class Unit { private: Flyweight * m_pFly; public : void SetFly(Flyweight* pFly) { m_pFly = pFly; } Flyweight* GetFly() { return m_pFly; } }; class Container { vector<Flyweight*> m_Container; public: ~Container() { vector<Flyweight*>::iterator it; for (it = m_Container.begin(); it != m_Container.end();) { it = m_Container.erase(it); } } void Insert(int nType) { Flyweight* pNewFly = new Flyweight(); Flyweight::Stock stock; // 타입은 전사, 마법사로 나뉘고 타입별로 스탯은 동일하다 if (0 == nType) { stock.nType = 0; stock.nMaxHP = 100; stock.nStr = 20; stock.nDef = 10; } else { stock.nType = 1; stock.nMaxHP = 50; stock.nStr = 40; stock.nDef = 5; } pNewFly->SetStock(stock); m_Container.push_back(pNewFly); } Flyweight* Search(int nType) { Flyweight* pFly = m_Container.at(nType); return pFly; } }; static Container UnitContainer; // 유닛 생성 class UnitManager { vector<Unit*> m_UnitList; public : ~UnitManager() { vector<Unit*>::iterator it; for (it = m_UnitList.begin(); it != m_UnitList.end();) { it = m_UnitList.erase(it); } } void Create(int nType) { Unit* pUnit = new Unit(); Flyweight* pFly = NULL; pFly = UnitContainer.Search(nType); pUnit->SetFly(pFly); m_UnitList.push_back(pUnit); } Unit* Get(int i) { return m_UnitList.at(i); } }; int main() { // Fly 정보 추가 UnitContainer.Insert(0); UnitContainer.Insert(1); UnitManager unitManager; for (int i = 0; i < 10; ++i) { unitManager.Create(0); } for (int i = 0; i < 10; ++i) { unitManager.Create(1); } unitManager.Get(1)->GetFly()->Print(1); unitManager.Get(3)->GetFly()->Print(3); unitManager.Get(9)->GetFly()->Print(9); unitManager.Get(10)->GetFly()->Print(10); unitManager.Get(15)->GetFly()->Print(15); unitManager.Get(19)->GetFly()->Print(19); //getchar(); } | cs |
출력결과
유닛1 Type:0 MaxHP:100
유닛3 Type:0 MaxHP:100
유닛9 Type:0 MaxHP:100
유닛10 Type:1 MaxHP:50
유닛15 Type:1 MaxHP:50
유닛19 Type:1 MaxHP:50
flyweight패턴
사용상황 : 디팬스 게임에서 내가 정중앙에 있고 적들이 사방에서 엄청 몰려올 때, 적의 수 만큼 데이터가 필요하다.
너무 많은 데이터가 필요하다면 공통된 정보는 공유해서 사용하는 방법이 Flyweight 패턴이다.
위 예제는 타입, 최대hp, 공격력, 방어력이 유닛타입(전사, 마법사) 에 따라 같다고 했을 때, 이는 공통되는 속석이므로,
공통되는 속성을 Flyweight로 묶어서 Unit이 참조하게 만들었다.
'이전게시판 > C, C++' 카테고리의 다른 글
c++ 전처리기 region 이란 (0) | 2018.09.30 |
---|---|
pragma message 출력창에 내용 출력 (0) | 2018.08.29 |
Cygwin 설치 설정 방법 (0) | 2018.07.27 |
서버 파싱 중 이진수 데이터 조합 (0) | 2018.06.20 |
VisualStudio 줄번호 바로가기 단축키 (0) | 2018.06.05 |
const와 포인터 (0) | 2018.05.30 |
C3083 왼쪽의 기호는 형식이어야 합니다 에러 정방선언... (0) | 2018.05.03 |
typedef한 자료형의 별명을 리턴값으로 사용시 에러... (0) | 2018.04.26 |
Post
VisualStudio 줄번호 바로가기 단축키 : Ctrl + G
'이전게시판 > C, C++' 카테고리의 다른 글
pragma message 출력창에 내용 출력 (0) | 2018.08.29 |
---|---|
Cygwin 설치 설정 방법 (0) | 2018.07.27 |
서버 파싱 중 이진수 데이터 조합 (0) | 2018.06.20 |
flyweight(플라이웨이트) 패턴 (0) | 2018.06.16 |
const와 포인터 (0) | 2018.05.30 |
C3083 왼쪽의 기호는 형식이어야 합니다 에러 정방선언... (0) | 2018.05.03 |
typedef한 자료형의 별명을 리턴값으로 사용시 에러... (0) | 2018.04.26 |
프로토콜, 라우터 (0) | 2018.04.19 |
Post
const : 변수가 상수가 되도록 정의하는 키워드
* 함수의 인자에 const 키워드를 선언한다면 구현 부분에도 const를 추가한다
선언부
void PrintNumber(const int nValue);
구현부
void PrintNumber(const int nValue)
{
printf("%d \n", nValue);
}
* 멤버변수의 값이 멤버함수 내에서 변경되지 않도록 만들려면 함수 선언 맨 뒤에 const를 추가한다.
(지역변수는 const 함수 내에서도 값 변경이 된다)
선언부
class Level
{
int nLevel = 0;
public:
// 함수안에서 값을 변경할 수 없을 때
void SetLevel(int nValue) const;
};
구현부
void Level::SetLevel(int nValue) const
{
int temp = nValue;
//nLevel = nValue;
}
* const 키워드를 포인터 변수에 사용할 시 위치에 따라 의미가 달라진다.
const int* p = &a;
const가 맨 앞에 있는 경우 : 포인터가 가르키는 변수의 값을 변경시키지 못한다.
*p = 22; (X)
int* const p = &a;
'이전게시판 > C, C++' 카테고리의 다른 글
Cygwin 설치 설정 방법 (0) | 2018.07.27 |
---|---|
서버 파싱 중 이진수 데이터 조합 (0) | 2018.06.20 |
flyweight(플라이웨이트) 패턴 (0) | 2018.06.16 |
VisualStudio 줄번호 바로가기 단축키 (0) | 2018.06.05 |
C3083 왼쪽의 기호는 형식이어야 합니다 에러 정방선언... (0) | 2018.05.03 |
typedef한 자료형의 별명을 리턴값으로 사용시 에러... (0) | 2018.04.26 |
프로토콜, 라우터 (0) | 2018.04.19 |
C3867 비표준 구문입니다. &를 사용하여 멤버 포인터를 만드세요 (0) | 2018.04.17 |
Post
C3083 왼쪽의 기호는 형식이어야 합니다 에러
아무리 선언되어있는 헤더파일을 INCLUDE해도 'INFO 왼쪽의 기호는 형식이어야 합니다' 에러가 떴다..
찾아보니..... 전방선언에 가려져있었다....
예를들어 namespace PC::INFO::SKILL 클래스를 사용하려고 했다면...
아래처럼 PC namespace가 먼저 전방선언되어있었다...
Attack.h
namespace PC{
class LevelInfo;
}
class Attacak
{
typedef PC::INFO::SKILL SKILL_INFO
}
Skill class를 전방선언하면 해결
사실 PC::INFO::SKILL::SKILL_TYPE 이란 enum을 전방선언으로 가져와쓰고 싶었는데 안된다!!!
namespace PC
{
namepsace INFO
{
class SKILL;
struct SKILL::SKILL_TYPE;
}
}
이렇게 정방선언하고 SKILL_TYPE::ENUM쓰면 .......ENUM 정보가 없으므로 가져오지 못한다...
'이전게시판 > C, C++' 카테고리의 다른 글
서버 파싱 중 이진수 데이터 조합 (0) | 2018.06.20 |
---|---|
flyweight(플라이웨이트) 패턴 (0) | 2018.06.16 |
VisualStudio 줄번호 바로가기 단축키 (0) | 2018.06.05 |
const와 포인터 (0) | 2018.05.30 |
typedef한 자료형의 별명을 리턴값으로 사용시 에러... (0) | 2018.04.26 |
프로토콜, 라우터 (0) | 2018.04.19 |
C3867 비표준 구문입니다. &를 사용하여 멤버 포인터를 만드세요 (0) | 2018.04.17 |
C++ 11 람다식(Lamda)이란 - 1 (0) | 2016.06.19 |
Post
'이전게시판 > C, C++' 카테고리의 다른 글
flyweight(플라이웨이트) 패턴 (0) | 2018.06.16 |
---|---|
VisualStudio 줄번호 바로가기 단축키 (0) | 2018.06.05 |
const와 포인터 (0) | 2018.05.30 |
C3083 왼쪽의 기호는 형식이어야 합니다 에러 정방선언... (0) | 2018.05.03 |
프로토콜, 라우터 (0) | 2018.04.19 |
C3867 비표준 구문입니다. &를 사용하여 멤버 포인터를 만드세요 (0) | 2018.04.17 |
C++ 11 람다식(Lamda)이란 - 1 (0) | 2016.06.19 |
IOCP 소켓 종료 상황 (0) | 2016.04.21 |
Post
Route
내 Pc Route 확인
cmd창에서 rount PRINT
활설경로 (NetworkDestination)이 0.0.0.0일 경우
라우팅 테이블에서 직접 구체적으로 지정한 주소 외의 모든 목적지 주소는 인터페이스를 통해 게이트웨이 주소로 보내라는 의미.
Route 라인 동작 실험
cmd창에서 tracert 200.200.200.200 ICMP 프로토콜로 패킷 전송
'이전게시판 > C, C++' 카테고리의 다른 글
VisualStudio 줄번호 바로가기 단축키 (0) | 2018.06.05 |
---|---|
const와 포인터 (0) | 2018.05.30 |
C3083 왼쪽의 기호는 형식이어야 합니다 에러 정방선언... (0) | 2018.05.03 |
typedef한 자료형의 별명을 리턴값으로 사용시 에러... (0) | 2018.04.26 |
C3867 비표준 구문입니다. &를 사용하여 멤버 포인터를 만드세요 (0) | 2018.04.17 |
C++ 11 람다식(Lamda)이란 - 1 (0) | 2016.06.19 |
IOCP 소켓 종료 상황 (0) | 2016.04.21 |
CRT 메모리 누수 체크 (0) | 2016.04.15 |