2012-02-14 5 views
0

그래서 몇 조각으로 파일을 분할하고 지금은 형식 오류가 많아지고 있어요. 예를 들면 :C++ 아무 것도 내 파일에 형식이 없습니다

phoneNUmber.h 'istream does not name a type'

이 정확히 무슨 뜻이야? 여기 내 파일은 꽤 짧습니다.

홈페이지

#include <iostream> 
#include <fstream> 
#include <string> 
#include "phoneEntry.h" 
using namespace std; 

int main() 
{ 
    PhoneEntry entry; 
    ifstream filezilla; 
    filezilla.open("phone.txt"); 

    if(filezilla) 
    { 
     while(!filezilla.eof() && entry.readEntry(cin)) 
     { 
      entry.writeEntry(cout); 
     } 
    } 
    else 
    { 
     cout << "Four Oh Four - File Not Found" << endl; 
    } 

    return 0; 
} 

전화 항목

#include "phoneNumber.h" 

class PhoneEntry 
{ 
    private: 
     PhoneNumber phone; 
     string firstName, 
       lastName; 
     void _writeDots(ostream& fout, int n) const; 
    public: 
     istream& readEntry(istream&); 
     ostream& writeEntry(ostream&) const; 

}; 

istream& PhoneEntry::readEntry(istream& Sin)      
{ 
    Sin >> firstName >> lastName; 
    phone.readNumber(Sin); 

    return Sin; 
}; 

ostream& PhoneEntry::writeEntry(ostream& Sout) const    
{ 
    const int num = 28; 
    int fill = num - ((firstName + lastName).length()); 

    Sout << firstName << ", " << lastName; 

    _writeDots(Sout, fill); 
    phone.writeNumber(Sout); 

    return Sout; 
}; 

void PhoneEntry::_writeDots(ostream& fout, int n) const 
{ 
    if(n % 2) 
    { 
     fout << "."; 
    } 

    for(int i = 0; i < n; i++) 
    { 
     fout << " ."; 
    } 
}; 

PHONENUMBER

class PhoneNumber 
{ 
    private: 
     int areaCode, 
      prefix, 
      suffix; 
    public: 
     istream& readNumber(istream&); 
     ostream& writeNumber(ostream&) const; 
}; 

istream& PhoneNumber::readNumber(istream& Sin)     
{ 
    Sin >> areaCode >> prefix >> suffix; 
    return Sin; 
}; 

ostream& PhoneNumber::writeNumber(ostream& Sout) const   
{ 
    Sout << " " << areaCode << "-" << prefix << "-" << suffix << endl; 
    return Sout; 
}; 
+0

PhoneNumber.h 파일에'#include '을 넣으려고 한 적이 있습니까? –

+0

하지만 main()이있는 파일에서이 파일을 포함 시키려면 phoneNumer 오른쪽으로 물방울이 있어야합니까? 전화 번호로 간다. 전화 번호로와. 그래서 내가 그럴 필요 없어. –

+0

내 C++ - fu는 약하지만 왜 필요한 후속 질문이 필요한지 묻습니다. –

답변

2

정확히 무슨 뜻입니까?

컴파일러는 ifstream이 연결된 유형이 아닌 변수 이름이라고 생각합니다.

#include <iostream> 
#include <fstream> 
#include <string> 

또한, PhoneEntry.cpp 및 PhoneNumber.cpp

Everyplace를에 당신이 있습니다 : 그것은 ifstream의 클래스 정의를 제공하지 않았기 때문에 그것은 때문에 당신이 적절한 파일을 포함 누락이 생각 istreamstd::istream

ostream와 같은

ifstream 등에서

해야 당신의 main.cpp 당신은 FOLL이 ow325 네임 스페이스를 전역 네임 스페이스로 가져 오는 문 using namespace std;을 사용하면 해당 파일 내부에 모든 iostream 호출에 네임 스페이스 std::을 추가 할 필요가 없습니다.

당신이 물건을 나눠 봤기 때문에 각 새로운 cpp 파일에는 더 이상 글로벌 네임 스페이스에 std::이 없으므로 직접해야합니다.

using namespace std;을 cpp 파일에 추가 할 수는 있지만 대개는 그렇지 않습니다.

관련 문제