왜 액세스 할 수 없습니까? 나는이 오류를 전혀 이해할 수 없다. 그것은 매우 모호하고 컴파일러에 의해 잘 설명되지 않습니다.비공개 std :: fstream 멤버에 액세스 할 수 없습니까?
Error 1 error C2248: 'std::basic_fstream<_Elem,_Traits>::basic_fstream' : cannot
access private member declared in class 'std::basic_fstream<_Elem,_Traits>' c:\users
\user\documents\visual studio 2012\projects\queue\queue\main.cpp 69 1 queue
줄 69는 세미콜론으로 닫는 중괄호를 포함합니다.
class queue {
public:
queue() {
back = NULL;
front = NULL;
}
void setfile(const char* to) {
file.open(to, std::fstream::in | std::fstream::out | std::fstream::app);
}
void push(const char* msg) {
file << msg << QueryPerformanceCounter(&nano::end);
if(front == NULL) {
back = new item(msg);
front = back;
}
else {
back->setprev(new item(msg));
back = back->getprev();
}
}
void* pop(const char* msg) {
file << msg << QueryPerformanceCounter(&nano::end);
if(front == NULL) {
return false;
}
else {
item* temp = front;
front = front->getprev();
delete temp;
}
}
private:
std::fstream file;
item* back;
item* front;
};
클래스 정의 끝에있는 마지막 중괄호는 오류가 나를 가리키는 곳입니다. private std :: fstream 객체를 할당하거나 복사하려고 시도했는지 궁금 할 지 모르지만 나는 그렇지 않습니다. 클래스를 사용하는 모든 코드는 클래스 정의 내에서 인라인입니다. setfile() 함수는 외부와 상호 작용하는 유일한 코드이며, 상수 문자 인수는 파일 이름뿐입니다.
현재 MSVC++ 2012를 사용 중입니다.
어디에서 fstream 객체를 복사합니까? – thelittlegumnut
@thelittlegumnut 대기열을 복사하고 있습니까? 이 코드 외부의 큐로 무엇을하고 있습니까? – 0x499602D2
컴파일러는 모든 클래스에 대한 복사 생성자를 생성합니다. 많은 경우에 대기열 객체를 복사 할 수 있습니다. 예를 들어, 값으로 대기열을 함수로 전달 : void foo (queue q) {// some code} – nnesterov