fstream
및 헤더 파일을 사용하여 연습하기위한 기본 C++ 코드를 작성하고 있습니다. 나는 다음과 같은 오류가 계속 : 여기collect2 : ld가 1 종료 상태 오류를 반환했습니다.
initializer.cpp:(.text+0xd9): undefined reference to `DataSet::DataSet(int, std::basic_string, std::allocator >, std::basic_string, std::allocator >, double)' collect2: ld returned 1 exit status
은 주입니다 :
#include <iostream>
#include <fstream>
#include <cstdlib>
#include "dataset.h"
using namespace std;
int main()
{
ofstream outData("data.txt",ios::binary);
if(!outData)
{
cerr<<"\nFile could not be opened!\n";
exit(1);
}
DataSet blankData;
for(int i=0;i<100;i++)
outData.write(reinterpret_cast<const char *>(&blankData),
sizeof(DataSet));
return 0;
}
헤더 :
#ifndef DATASET_H
#define DATASET_H
#include <string>
using namespace std;
class DataSet
{
public:
DataSet(int=0,string="",string="",double=0.0);
void setAccountNumber(int);
int getAccountNumber() const;
void setLastName(string);
string getLastName() const;
void setFirstName(string);
string getFirstName() const;
void setBalance(double);
double getBalance() const;
private:
int accountNumber;
char lastName[15];
char firstName[10];
double balance;
};
#endif
하고 해당 통화 당 :
#include <string>
#include "dataset.h"
DataSet::DataSet(int accountNumberValue,
string lastNameValue,string firstNameValue,
double balanceValue)
{
setAccountNumber(accountNumberValue);
setLastName(lastNameValue);
setFirstName(firstNameValue);
setBalance(balanceValue);
}
int DataSet::setAccountNumber(int accountNumberValue)
{
accountNumber=accountNumberValue;
}
void DataSet::getAccountNumber() const
{
return accountNumber;
}
string DataSet::setLastName(string lastNameString)
{
const char *lastNameValue=lastNameString.data();
int length=lastNameString.size();
length=(length<15?length:14);
strncpy(lastName,lastNameValue,length);
lastName[length]='\0';
}
void DataSet::getLastName() const
{
return lastName;
}
string DataSet::setFirstName(string firstNameString)
{
const char *firstNameValue=firstNameString.data();
int length=firstNameString.size();
length=(length<10?length:9);
strncpy(firstName,firstNameValue,length);
firstName[length]='\0';
}
void DataSet::getFirstName() const
{
return firstName;
}
double DataSet::setBalance(double balanceValue)
{
balance=balanceValue;
}
void DataSet::getBalance() const
{
return balance;
}
그리고 ** 모든 ** 컴파일 된 객체 코드 모듈을 프로그램에 연결 했습니까? [이 문서를보십시오] (http://stackoverflow.com/questions/12573816/what-is-an-undef-reference-unresolved-external-symbol-error-and-how-do-i-fix). 특히 네 번째 대답. – WhozCraig