bind 할 때 ref 시그니처를 가지는 함수 사용하는 법

 

아래 코드가 컴파일이 안되면서 문제시작.

boost 의 asio 튜토리얼 3번인데 원래 함수의 시그니처에 포인터로 되어있던 것을 참조로 고치면서 문제발생함

https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/tutorial/tuttimer3/src.html

 

해결방법: 함수로 전달하는 인자(파라미터) t을 std::ref(t)로 변경하면 됨.

이유: https://stackoverflow.com/questions/33240993/c-difference-between-stdreft-and-t

bind 함수가 실행될 때 인자를 모조리 복사(!)해서 함수자(?확인필요)로 저장해 두었다가 나중에 사용하는데, 이 때 객체의 복사가 발생함. 불행히도 steady_timer는 클래스 정의부분에 "복사 생성자"를 삭제(basic_waitable_timer.hpp line:693 참조)했기 때문에 컴파일 에러가 발생함.

 

#include <iostream>

#include <boost/asio.hpp>

#include <boost/bind.hpp>

#include <functional>

 

using boost::asio::io_context;

using boost::asio::steady_timer;

using boost::asio::chrono::seconds;

using boost::asio::placeholders::error;

using boost::system::error_code;

using std::cout;

using std::endl;

 

void print(const error_code/*e*/steady_timertintcount)

{

       if (count < 5)

       {

               cout << count << endl;

               ++(count);

               t.expires_at(t.expiry() + seconds(1));

               // t.async_wait(boost::bind(print, error, tcount)); // 에러

               t.async_wait(boost::bind(print, error, std::ref(t)count));

       }

}

 

int main()

{

       io_context io;

       int count = 0;

       steady_timer t(io, seconds(1));

       // t.async_wait(boost::bind(print, error, t, count)); // 에러

       t.async_wait(boost::bind(print, error, std::ref(t), count));

 

       io.run();

 

       cout << "Final count is " << count << endl;

 

       return 0;

}

 

참조사이트

1, 2: 본문에 링크

3 : https://pmoncode.tistory.com/23

 

C++. 복사 생성자와 복사 대입 연산자의 차이

C++. 복사 생성자 (Copy Constructor) 와 복사 대입 연산자 (Copy Assignment Operator) 의 차이 참고 : Effective C++ 처음에 복사 생성자와 복사 대입 연산자를 공부하고 나면, 언제 이 친구들이 호출되는지 어..

pmoncode.tistory.com

 

안녕하세요
아파트 벽에 드릴로 못이나 선반등등 작업할 일이 참 많은데요
이 때 바닥에 엄청난 시멘트 가루가 흩날리게 됩니다. 🤤
그래서 제가 사용하는 깨알 꿀팁이 있는데요

바로 ~~~~~~~~~~~


보이시나요?
주방에서 흔히 사용하는 지퍼백입니다
지퍼백을 드릴작업하는 바로아래 달아주시면
시멘트 가루가 바로바로 지퍼백 안으로 쏘옥~ 들어간답니다


작업이 끝난 후 지퍼백만 딱 닫고 휴지통 속으로 버리면
빨래끝! 청소끝! 휴식시작!

드릴작업하느라 힘들었는데 청소는 간단히 끝내고 소파로 쏘옥 쉬러가자구요~

1. Window + R 눌러서 실행 창 실행

 

2. cmd 입력 후 엔터

 

3. 커맨드 창이 실행되면 아래와 같이 입력 후 엔터

 

 

4. 나온 위치 탐색기에 붙여넣기

 

 

5. NPKI 폴더 백업 (다른 위치로 복사)

 

하드링크와 심볼릭링크의 개념설명

https://m.blog.naver.com/PostView.nhn?blogId=s2kiess&logNo=220142016926&proxyReferer=https%3A%2F%2Fwww.google.com%2F


리눅스에서 링크

https://jybaek.tistory.com/578


윈도우에서 링크

https://skeleton.tistory.com/22



1) 레지스트리 실행 (Win + R 실행 후 regedit 입력 후 엔터)


2) 아래위치로 이동 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace


3) 삭제하고 싶은 폴더에 해당하는 키 삭제


다운로드 {088e3905-0323-4b02-9826-5d99428e115f}
동영상 {f86fa3ab-70d2-4fc7-9c99-fcbf05467f3a}
문서 {d3162b92-9365-467a-956b-92703aca08af}
바탕화면 {B4BFCC3A-DB2C-424C-B029-7FE99A87C641}
사진 {24ad3ad4-a569-4530-98e1-ab02f9417aa8}
음악 {3dfdf296-dbec-4fb4-81d1-6a3438bcf4de} 

3D 개체 {0DB7E03F-FC29-4DC6-9020-FF41B59E513A}




안될경우 링크 참조


https://answers.microsoft.com/ko-kr/windows/forum/windows_10-files/%EC%9C%88-10-%EC%97%90%EC%84%9C/c1a6e16e-31d7-4eb7-9196-dfdd7e4584b5


https://prolite.tistory.com/1138


https://extrememanual.net/11952


npUpdateC.exe 오류 해결법

1. 시작 - 제어판


2. 프로그램 - 프로그램 제거 클릭


3. nProtect Online Security 프로그램 제거


1. Jupyter Notebook 환경 설정 파일 생성

 

① 명령창 (Command 실행 또는 Anaconda 사용중인 경우 Anaconda Prompt 실행)

 

② 명령창에 아래 명령

 

jupyter notebook --generate-config

 

 

위 명령이 정상적으로 실행되면 해당 설정 파일( jupyter_notebook_config.py ) 이 생성된 경로가 표시된다.

 

 

 

 

2. 경로 설정

 

① "jupyter_notebook_config.py" 파일을 텍스트 편집기로 열기

 

② 찾기 기능으로 "notebook_dir"를 찾기

 

③ 기본적으로 주석처리 되어 있으므로 주석을 해제( # 삭제 )

 

④ c.NotebookApp.notebook_dir = ' ' 에서,  ' ' 사이에 원하는 시작 디렉토리 위치(절대경로)를 입력



[출처] https://agiantmind.tistory.com/194

 

원문 출처 https://agiantmind.tistory.com/43


Microsoft Office Excel 2010을 사용할 때 여러개의 창으로 띄우기 위한 레지스트리 수정 방법

출처 1) 아이비인포텍(주),

https://sites.google.com/a/ibinfo.co.kr/ibinfo/tip/windows7eseoexcel2010dajungchangmultiwindowttuiugi

출처 2
) Microsoft® Answers, http://answers.microsoft.com/ko-kr/office/forum/office_2010-excel/엑셀2010에서-파일별-창-따로-열기/87d5d69b-d94d-e011-8dfc-68b599b31bf5

출처 3) 스누피박스(snoopybox), http://snoopybox.co.kr/1511 (X, 글 삭제됨)



간단 요약 하면 아래와 같으며,

1. 실행 > regedit

2. HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\ddeexec 및
    HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\ddeexec 항목 삭제

3. HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\command 및 
HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command 에서 기본값 항목외 삭제

4. HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\command 의 기본값 항목을 아래와 같이 수정
"C:\Program Files\Microsoft Office\Office14\EXCEL.EXE" /m "%1"

HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command 의 기본값 항목을 아래와 같이 수정
"C:\Program Files\Microsoft Office\Office14\EXCEL.EXE" /m "%1"




(※ 레지스트리 변경은 위험한 작업이므로 레지스트리 백업을 권장하며, 이게 뭔 말인지 잘 모르겠으면 그냥 살 것을 추천함)


더 자세한 내용은 출처 1,2,3의 내용을 참조 !!!


+ Recent posts