ASIO GET을 위해 회원들과 객체 ++ 그것을 인스턴스화하십시오. 무엇 예를 들어 ostream에 최대 것은 :C는 내가 회원이 기능을 일치하는 클래스를 구현하려는 방법
this -> out = new ostream();
전 C에 여전히 새로운 ++ 지금 미안 완전히 혼란 스러워요, 나는 Google에서 정답을 찾을 수 없습니다.
ASIO GET을 위해 회원들과 객체 ++ 그것을 인스턴스화하십시오. 무엇 예를 들어 ostream에 최대 것은 :C는 내가 회원이 기능을 일치하는 클래스를 구현하려는 방법
this -> out = new ostream();
전 C에 여전히 새로운 ++ 지금 미안 완전히 혼란 스러워요, 나는 Google에서 정답을 찾을 수 없습니다.
std::ostream
은 std::ofstream
과 같은 특정 스트림 구현의 기본 클래스이므로 직접 인스턴스화 할 수 없습니다.
++, 자바와는 달리, 우리는 힙에있는 모든 할당하지만 값 의미 선호하지 않습니다
/// Can be easily copied
class HoldSomething {
private:
std::string name;
std::vector<std::string> values;
public:
/// constructors
HoldSomething() : name(), values() {}
explicit HoldSomething(const std::string& name) :
name(name), values() {}
/// modifiers
void addValue(const std::string& val) {
value.push_back(val);
}
...
참조와 포인터 사이에 혼란스러워합니다. 이 함수는 벡터 & 헤더, 문자열 & host_ 등과 같은 참조를 취합니다. 클래스는 동일한 것은 아닌 포인터를 저장합니다.
정상적으로 함수에 변수를 전달하면 (서명에 no * 또는 &) 변수를 전달하면 전달하는 항목의 복사본을 만들 수 있습니다. 이는 "pass-by-copy"입니다. 포인터 (*)를 전달하면 사용할 변수의 메모리 주소를 가리키는 포인터가 전달됩니다. 엄밀히 말하면 복사로 포인터를 전달하고 있지만 똑같은 점을 지적하면 괜찮습니다. 참조 (&)를 전달하면 함수가 호출되는 범위에서 변수의 별칭을 지정합니다. "변경 사항을 처음에 함수에 전달한 후 바깥 범위에서 변경 사항을 적용하려는 경우를 제외하고는 복사본으로 전달할 때처럼이 변수를 처리하고 싶습니다."라고 말합니다.
그래서, 클래스 대신 일반 회원을 포함 할 수 있습니다
private:
string host;
string port;
string url;
ostream out;
vector<string> header;
unsigned int timeout;
그런 식으로 당신은 문제없이 함수에 직접 전달할 수 있습니다. 또한이 경우에는 기본값으로 생성되므로 "new"를 사용하거나 다른 작업을 수행 할 필요가 없습니다. 사실, 생성자를 작성할 필요조차 없습니다.
마음을 사로 잡았던 이래로이 모든 것을 수정할 수 있도록 접근 함수가 필요하거나 구조체를 사용하기 전에 데이터 멤버에게 유용한 값을 제공 할 수 있도록 생성자가 매개 변수를 가져야합니다.
PS : 당신은 :) 아래 링크에서 다음 예제를 확인하는 대신 출력을위한 표준 :: ofstream을 사용하려면 : 당신은 당신이 점점 오류를 게시해야
. std::ostream
은 인터페이스입니다. 당신은 그것을 instatiate 수 없습니다.
표준 : : ostream에 당신은 "밖으로"초기화 할 수 있습니다 단지 인터페이스 입니다 포인터를 "std :: cout"또는 std :: ostream에서 파생 된 다른 구체적인 객체로 가리 킵니다.예를 들어 : 그런데
out = &std::cout;
또는
std::ofstream file("file.txt");
out = &file;
, 일반 포인터를 사용하는 것은 좋지 않다. std :: shared_ptr 또는 std :: unique_ptr과 같은 스마트 포인터를 사용해보십시오.
정확하게 name(), values () ?? –
이들은 멤버 변수에 대한 생성자 호출입니다. 업데이트 된 코드를 참조하십시오. –