2016-12-23 18 views
0

私はC++を学習しています。私は私のC++クラスを別々のファイルに分割して実装することを練習しています。実装ファイルとヘッダファイルはStudent_Impl.cppStudent_Header.hです。そして、ドライバファイルStudent_register.cppがあり、3つのStudentオブジェクトが作成されます。しかし、私はそれを構築しようとすると、それは学生が名前空間またはクラスではないというエラーを投げています。 Student_Header.h(Studentクラス宣言があるところ)を、実装ファイルStudent_Impl.cppとドライバファイルStudent_register.cppに含めましたが、それでも同じエラーがスローされます。考えられる原因は何か?私は、Visual Studioを使用しています2015年実装ファイルがC++ヘッダーファイルからクラス名を識別できません

Student_Header.h

#pragma once 
#include <string> 
using namespace std; 

class Student { 
private: 
    string fname; 
    string lname; 
    string address; 
    string city; 
    string phone; 
    int age; 

public: 
    Student(); 
    Student(string, string, string, string, string, int); 
    ~Student(); 
    string get_fname(); 
    string get_lname(); 
    string get_address(); 
    string get_city(); 
    string get_phone(); 
    int get_age(); 
}; 

Student_Impl.cpp

#include "Student_Header.h" 
    #include "iostream" 
    #include "stdafx.h" 
    #include <string> 
    using namespace std; 

    Student::Student() 
    { 

    } 

    Student::Student(string fname1, string lname1, string address1, string city1, string phone1, int age1) 
    { 
     fname = fname1; 
     lname = lname1; 
     address = address1; 
     city = city1; 
     phone = phone1; 
     age = age1; 
    } 

    string Student::get_fname() 
    { 
     return fname; 
    } 

    string Student::get_lname() 
    { 
     return lname; 
    } 

    string Student::get_address() 
    { 
     return address; 
    } 

    string Student::get_city() 
    { 
     return city; 
    } 

    string Student::get_phone() 
    { 
     return phone; 
    } 

    int Student::get_age() 
    { 
     return age; 
    } 


    Student::~Student() 
    {} 

Student_register.cpp

#include "stdafx.h" 
#include "Student_Header.h" 
#include <string> 
#include "iostream" 
using namespace std; 

int main() 
{ 
    Student Student1("Mike", "J", "MikeAdd", "MikeCity", "MikePhone", 26); 
    Student Student2("Jack", "R", "JackAdd", "JackCity", "JackPhone", 25); 
    Student Student3("Roney", "M", "RoneyAdd", "RoneyCity", "RoneyPhone", 27); 

    // code for data retrieval 

    return 0; 
} 
+0

正しいヘッダーファイルが含まれていますか? 異なる名前の複数のファイルが異なるフォルダにある場合、コンパイラは間違ったファイルを選択する可能性があります。 実際に使用されているファイルを確認するには、実装ファイルの1つに[Includeを表示]オプションを有効にします。このオプションは、ファイルプロパティIIRCの "C++" - "Advanced"セクションにありました。 –

+0

@MarvinSielenkemperはい、Student_Header.hは正しいヘッダーファイルです。その名前の唯一のファイルです。 – VickyRoch

+2

"Student_Impl.cpp"にローカルヘッダーファイル_after_ "stdafx.h"を含める必要があります。このファイルは、VSのプリコンパイル済みヘッダーメカニズムの一部であり、特別な注意が必要です。 –

答えて

0

Marvin Sielenkemperがコメントに正しい答えを入れました - の前に "stdafx.h"へのは無視されます。これは、プリコンパイルされたヘッダーがVisual Studio上でどのように動作するかという実装固有の副作用です。

また、#include "iostream"の代わりに#include <iostream>を使用してください。 <header>フォームは標準ヘッダー用です。"header.h"は独自のヘッダー用です。

関連する問題