XML 파일에서 응용 프로그램에 대한 여러 '설정'을 읽는 중입니다.이 설정이 모든 내 기능에 액세스 할 수 있도록 네임 스페이스에 있어야합니다. 나는 헤더에서 네임 스페이스 변수를 'extern int test;라고 선언하여이 작업을 성공적으로 수행했습니다. 그런 다음 소스 파일 'int test {0};'에서 초기화하십시오. 그런 다음 소스 파일에는 XML을 읽고 네임 스페이스 변수에 값을 할당하는 함수가 있으며 모든 것이 늠름한 것입니다.네임 스페이스의 전역 const 변수를 함수의 값으로 초기화하는 방법은 무엇입니까?
문제 그들은 상수 일 필요가있을 때 ~ 100 개의 읽기/쓰기 가능한 전역 변수를 생성한다는 것을 알고 있습니다. 그래서 지금은 코드가 바뀌므로 코드가 바뀌고 가능한 코드가 보이지 않습니다. 다음은 내가 시도한 것입니다 :
//settings.hpp
#pragma once
//header guard
namespace settings {
extern const int ktest;
}
//settings.cpp
void ReadXML() {
int testvalue{1}; //1 is default values
//here would be some code that gets value form XML and assigns it to testvalue
namespace settings {
const int ktest{testvalue};
}
}
이제 문제는 기능 내에 네임 스페이스 값을 넣을 수 없다는 것입니다. 따라서 함수 ReadXML 외부로 이동하면 임시 변수도 이동해야하지만 함수가 실행 된 후에 만 초기화 된 네임 스페이스 변수가 필요하므로 중요하지 않습니다. 나는 가능한 일을하려고 노력하고 있습니까?
나는 전역 변수가 가변적인지 const인지 여부는 문제가 아니라고 말할 것이다. 문제는 글로벌 변수라고 말할 수 있습니다. 그리고 100 명. 그건 좋은 프로그래밍 실습이 아닙니다. –
나는 그것을 주장하지 않는다. 그러나 만일 당신이 100 개의 전역 변수를 가지면, 그들이 일정하다면 더 좋지 않을까? 이 변경 사항은 모든 단일 소스 파일을 변경해야하지만 적어도 일정하게 만들 필요는 없었습니다. 개선이 될 것이라고 생각했습니다. – DrTarr