TIS/TIL 211119

gyeon·2021년 11월 19일
0

TIL/TIS

목록 보기
7/14

TIL

C++

namespace

namespace는 굳이 C++에만 국한된 개념이 아니라, 개체를 구분하기 위해 나눈 대분류 같은거이다. -> 파일시스템, 다른 프로그래밍 언어등등에서도 사용.
Cpp에서 namespace는 내부 식별자에 범위를 제공하는 선언적 영역이다.

namespace gyeon{
	class test {
    	int var1;
    	void func1(){};
        ...
    }
    ...
}

using

using은 명시적 한정자이다.
using없이 특정 namespace안의 맴버들을 사용하기 위해서는 namespace명::클래스::함수... 형태로 접근해야한다.
하지만 using을 사용하면 특정 namespace의 멤버들을 이름을 호출하는것 만으로도 접근할수 있다.

using namespace gyeon;		// 지시자
using gyeon::test::func1;	// 선언

class Exer {
	tc
	test::var1 = 3;
	// gyeon::test::func1();
    func1();
}

클래스 선언 및 사용 코드

gyeon.h

#ifndef GYEON_H
# define GYEON_H

#include <iostream>

namespace gyeon {
    class TestClass {
    // 접근지시지 생략하면 priavate. 
    private :
        int var1;
    public :
        void setVar1(int var1);
        int getVar1();
    };
}

#endif

gyeon.cpp

#include "gyeon.h"

using namespace gyeon;

void TestClass::setVar1(int var1) {
    this->var1 = var1;
}

int TestClass::getVar1() {
    return this->var1;
}

helloNamespace.cpp

#include "gyeon.h"
using namespace gyeon;

int main() {
    TestClass tc;
    tc.setVar1(42);
    std::cout << tc.getVar1() << std::endl;
    return 0;
}

vscode 컴파일 에러

task.json 설정할때 이 블로그참고.

Ctrl Shift B로 build시, 설정한 명령 앞에 C:\WINDOWS\System32\wsl.exe -d Ubuntu -e가 붙어서 에러 났다. 이건 vscode 터미널의 기본프로필이 ubuntu(wsl)로 설정되어있어서 그런거 같다. 터미널의 기본 프로필을 PowerShell로 변경하면 해결된다.

최고의 방법은 json파일을 어떻게 잘 설정해서 어느 셸에서든 빌드 되게 하는건데... 솔찍히 정보도 많이 없고 가성비 떨어지는거같다.

vscode 환경변수들

profile
백엔드와 서버 in 42Seoul

0개의 댓글