저는 구조 중에 두 개의 const char*
문자열을 연결해야하고 나중에 초기화 목록에서 결과 (연결된 문자열)를 사용해야하는 클래스가 있습니다.안전하게 클래스 생성자에서 C- 문자열을 연결하십시오.
const char* SUFFIX = "suffix";
class widget {
public:
widget(const char* prefix) : key(???), cls(key) { };
private:
const char* key;
const important_class cls;
}
widget("prefix_"); // key should be prefix_suffix
는 글로벌있다 (에 widget
의 CPP) 나는 사용자가 제공 한 접두사에 추가 할 const char*
접미사.
어떻게 만드시겠습니까?
BTW. 나는 에 대해 들었습니다. 당신이 const char*
이 필요하면, 당신은 여전히 const char*
를 반환하는 key.c_str()
를 callng하여 얻을 수
const std::string SUFFIX = "suffix";
class widget {
public:
widget(std::string const & prefix)
: key(prefix + SUFFIX), cls(key)
{ } // ^^^^^^^^^^^^^^concatenation!
private:
const std::string key;
const important_class cls;
}
widget("prefix_");
: 나는 string
를 사용할 수 있다면 나는 약 const char*
'std :: string'(또는 프로젝트에서 사용하는 문자열 클래스)을 사용해야합니다. 그렇게하면 훨씬 쉽게되고 예외를 피할 수 있습니다. – JoergB
** 왜 ** 당신은'string'을 사용할 수 없습니까? 여러분의 클래스는'string'의 관점에서 그것을 쓰더라도'const char *'를 기꺼이 받아 들일 것입니다 : http://liveworkspace.org/code/3eDEfw$4 – us2012
이것은'C++와'클래스가 아닌'C++입니다. –