C++ undefined reference

Рейтинг: 3Ответов: 1Опубликовано: 15.02.2015

Здравствуйте, есть проблема с компиляцией на Убунту. Нашел урок по классам, решил их опробовать, но что-то пошло не так. При попытке компиляции выдает следующее.

cookie@ubuntu:~/Desktop/Labs/CppStudio$ g++ classes.cpp
/tmp/ccGexRgY.o: In function `main':
classes.cpp:(.text+0x26): undefined reference to `CppStudio::CppStudio(int, int, int)'
classes.cpp:(.text+0x32): undefined reference to `CppStudio::message()'
classes.cpp:(.text+0x3e): undefined reference to `CppStudio::getDate()'
collect2: error: ld returned 1 exit status

Где может быть проблема? Ubuntu 14.04 LTS

classes.cpp

// classes.cpp: определяет точку входа для консольного приложения.

// подключаем класс CppStudio
#include "CppStudio.h"

int main(int argc, char*argv[])
{
    CppStudio objCppstudio(11,11,2011); // объявление объекта и инициализвция элементов данных
    objCppstudio.message(); // вызов функции message
    objCppstudio.getDate(); // отобразить дату
    return 0;
}

CppStudio.cpp // файл реализации класса CppStudio.cpp

#include <iostream>
using namespace std;
// подключаем интерфейс класса к файлу его реализации
#include "CppStudio.h"

CppStudio::CppStudio(int date_day, int date_month, int date_year ) // конструктор класса
{
 setDate(date_day, date_month, date_year); // вызов функции установки даты
}

void CppStudio::message() // функция (метод класса) выводящая сообщение на экран
{
 cout << "nwebsite: cppstudio.comntheme: Classes and Objects in C + +n";
}

void CppStudio::setDate(int date_day, int date_month, int date_year) // установка даты в формате дд.мм.гг
{
 day   = date_day; // инициализация день
 month = date_month; // инициализация месяц
 year  = date_year; // инициализация год
}

void CppStudio::getDate() // отобразить текущую дату
{
 cout << "date: " << day << "." << month << "." << year << endl;
}

CppStudio.h // заголовочный файл класса СppStudio.h // интерфейс класса

// объявление класса
class CppStudio // имя класса
{
private: // спецификатор доступа private
    int day, // день
        month, // месяц
        year; // год
public: // спецификатор доступа public
    CppStudio(int, int, int); // конструктор класса
    void message(); // функция (метод класса) выводящая сообщение на экран
    void setDate(int, int, int); // установка даты в формате дд.мм.гг
    void getDate(); // отобразить текущую дату
}; // конец объявления класса CppStudio

Ответы

▲ 1Принят

Нужно компилировать где-то так:

g++ classes.cpp CppStudio.cpp

Если файлов будет больше, то лучше сделать make файл или любой другой файл проекта.