0

ユーザーの入力を受け取り、それをベクター/データベースに入れ、結果を出力するアプリケーションを構築しようとしています。コードを Windows コマンド プロンプト コンパイラに入力すると、C:/users/app/data/local/temp というパスが返され、cin、cout などの実質的にすべてへの未定義の参照エラーが返されます。通常のエラーが発生しましたが、エラーを削除するとこれが発生しましたが、セミコロンを削除するとエラーが1つだけ発生します。これを引き起こしている可能性のあるアイデアはありますか??

MP3.H

#define MP3_H
#include <iostream>
#include<string>

using namespace std;

class MP3
{

 public:

   MP3();//constructor
   MP3(string,string,int,int,string);
   ~MP3();

  string getName() const;
  string getSongName() const;
  int getDuration() const;
  int getReleaseYear() const;
  string getReview() const;

  private:
  string artistMP;
  string songMP;
  int duationMP;
  int releaseyearMP;
  string reviewMP;
}
#endif

MP3.cpp

#include "MP3.h"



MP3::MP3();
MP3::MP3(string artist,string  song,int duration,int releaseyear,string review){

 artistMP=artist;
 songMP=song;
 durationMP=duration;
 releaseyearMP=releaseyear;
 reviewMP=review;

}
~MP3::MP3();

string MP3::getName()const;{
return artistMP;
}

string MP3::getSongName()const;{
return songMP;
}

int MP3::getDuration()const;{
return durationMP;
}

int MP3::getReleaseYear()const;{
return releaseyearMP;
}

string MP3::getReview()const;{
return reviewMP;
}

main.cpp

#include<vector>
#include "MP3.h"


void  fillVector(vector<MP3>&);//5

void print (const vector<MP3>&);//7

int main( )

{

vector<MP3> myRecord;

fillVector(myRecord);
print(myRecord);

return 0;
}


void fillVector(vector<MP3> & newMyRecord){//22

cout<<"How many songs in the playlist baby";
int recordSize;
cin>>recordSize;

 for(int i=0;i<recordSize;i++)

{
 string artist;
  string song;
 int duration;
 int releaseyear;
 string review;

 cout<<"Enter Artist Name:";
 cin>>artist;
 cout<<"Enter Song Name:";
 cin>>song;
 cout<<"Enter Song Duration(in seconds):";
 cin>>duration;
 cout<<"Enter Release Year:";
 cin>>releaseyear;
 cout<<"Enter Brief Review:";
 cin:review;

MP3 newMP3(artist,song,duration,releaseyear,review);
newMyRecord.push_back(newMP3);
cout<<endl;


}
cout<<endl;
}


void print (const vector<MP3>&newMyRecord)//58

{
unsigned int size = newMyRecord.size();
for (unsigned int i=0;i<size;i++){

cout<<"Artist:"<< newMyRecord[i].getName()<<endl;
cout<<"SongName:"<< newMyRecord[i].getSongName()<<endl;
cout<<"Duration:"<< newMyRecord[i].getDuration()<<endl;
cout<<"ReleaseYear:"<< newMyRecord[i].getReleaseYear()<<endl;
cout<<"Review:"<< newMyRecord[i].getReview()<<endl;
}

}

};

ティア

4

1 に答える 1

1

プログラムのビルドは、(少なくとも) コンパイルとリンクの 2 つの段階で行われます。未定義の参照はリンカー エラーです。リンカー エラーが発生した場合は、コンパイルが成功したことを意味します。しかし、コンパイラ エラー (たとえば、セミコロンに関する不適切な構文) がある場合、リンクは行われないため、リンカ エラー (未定義の参照など) は表示されません。

于 2013-11-08T17:12:01.997 に答える