collect2: ld вернул 1 ошибку состояния выхода

0

Я пишу основной код C++ для практики с использованием файлов fstream и header. Я продолжаю получать следующую ошибку:

initializer.cpp :(. text + 0xd9): неопределенная ссылка на "DataSet :: DataSet (int, std :: basic_string, std :: allocator>, std :: basic_string, std :: allocator>, double) 'collect2: ld вернулся 1 статус выхода

Здесь главное:

#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;
}
Теги:
header
fstream

1 ответ

1

Компонент не находит символ "DataSet :: DataSet()", используемый в объекте Initializer. Это может произойти, если объектный файл, сгенерированный для соответствующего cpp, не связан вместе с Initializer, иногда это может произойти, потому что вы не добавляли соответствующий cpp в project/makefile.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню