0
我正在編寫基本C++代碼來練習使用fstream
和頭文件。我不斷收到以下錯誤: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
和相應的.cpp:
#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-undefined-reference-unresolved-external-symbol-error-and-how-doi-i-fix)。特別是第四個答案。 – WhozCraig