namespace는 굳이 C++에만 국한된 개념이 아니라, 개체를 구분하기 위해 나눈 대분류 같은거이다. -> 파일시스템, 다른 프로그래밍 언어등등에서도 사용.
Cpp에서 namespace는 내부 식별자에 범위를 제공하는 선언적 영역이다.
namespace gyeon{
class test {
int var1;
void func1(){};
...
}
...
}
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;
}
task.json 설정할때 이 블로그참고.
Ctrl Shift B로 build시, 설정한 명령 앞에
C:\WINDOWS\System32\wsl.exe -d Ubuntu -e
가 붙어서 에러 났다. 이건 vscode 터미널의 기본프로필이 ubuntu(wsl)로 설정되어있어서 그런거 같다. 터미널의 기본 프로필을 PowerShell로 변경하면 해결된다.
최고의 방법은 json파일을 어떻게 잘 설정해서 어느 셸에서든 빌드 되게 하는건데... 솔찍히 정보도 많이 없고 가성비 떨어지는거같다.