Jestem dopiero nowicjuszem w kwestii programowania(dopiero zacząłem uczyć się klas), jednakże mam problem z kompilacją kodu z powodu błędu: error LNK2001: unresolved external symbol "class ksiazka * ksiazki" (?ksiazki@@3PAVksiazka@@A). Podzieliłem swój program na 5 plików:
main.cpp
#include <iostream>
#include <conio.h>
#include <string>
#include "klasa.h"
#include "main.h"
void main()
{
ksiazka ksiazki[20];
for(;;)
{
int Wybor;
system("cls");
std::cout << "Menu:" << std::endl;
std::cout << "-------------------------------------" << std::endl;
std::cout << "1. Dodaj ksiazke do bazy danych" << std::endl;
std::cout << "2. Czytaj ksiazkę z bazy danych" << std::endl;
std::cout << "3. Wyswietl ksiazki, bedace w bazie danych" << std::endl;
std::cout << "0. Wyjscie" << std::endl;
switch(Wybor)
{
case 1 : Dodawanie(); break;
case 2 : Czytanie(); break;
case 3 : PokazBaze(); break;
case 0 : break; break;
default:
{
std::cout << "Nieznana opcja!" << std::endl;
}
}
}
_getch();
}
main.h
#include<string>
#include "klasa.h"
struct wpisywanaksiazka
{
std::string tytul;
std::string autor;
std::string ISBN;
int iloscstron;
int iloscwersow;
};
extern ksiazka ksiazki[20];
bool Dodawanie();
bool Czytanie();
bool PokazBaze();
funkcje.cpp
#include <iostream>
#include <conio.h>
#include <string>
#include "main.h"
#include "klasa.h"
bool Dodawanie()
{
system("cls");
wpisywanaksiazka wpisana;
std::cout << "Podaj tytuł książki: ";
std::cin >> wpisana.tytul;
std::cout << std::endl;
std::cout << "Podaj autora książki: ";
std::cin >> wpisana.autor;
std::cout << std::endl;
std::cout << "Podaj ISBN książki: ";
std::cin >> wpisana.ISBN;
std::cout << std::endl;
std::cout << "Podaj ilosc stron książki: ";
std::cin >> wpisana.iloscstron;
std::cout << std::endl;
std::cout << "Podaj ilos wersow na stronie: ";
std::cin >> wpisana.iloscwersow;
std::cout << std::endl;
for(int i = 0; i < 20; i++)
{
if(ksiazki[i].tytul.length() == 0)
{
ksiazki[i].tytul = wpisana.tytul;
ksiazki[i].autor = wpisana.autor;
ksiazki[i].ISBN = wpisana.ISBN;
ksiazki[i].iloscstron = wpisana.iloscstron;
ksiazki[i].iloscwersow = wpisana.iloscwersow;
std::cout << "Wpisanie do bazy danych powiodło sie. Numer w bazie danych to:" << (i+1) << std::endl;
_getch();
return true;
}
else
{
if( i == 19)
{
std::cout << "Brak miejsca w bazie danych. Nie mozna wpisac ksiazki." << std::endl;
return false;
}
}
}
}
bool PokazBaze()
{
system("cls");
std::cout << "Lp. Tytul Autor ISBN" << std::endl;
for (int i = 0; i < 20; i++)
{
std::cout << (i+1) << ". " << ksiazki[i].tytul << " " << ksiazki[i].autor << " " << ksiazki[i].ISBN << std::endl;
}
_getch();
return true;
}
bool Czytanie()
{
return true;
}
klasa.h
#include<string>
#pragma once
class ksiazka
{
public:
std::string tytul;
std::string autor;
std::string ISBN;
unsigned iloscstron;
unsigned iloscwersow;
unsigned obecnastrona;
unsigned obecnywers;
public:
std::string pokaztytul();
std::string pokazautora();
std::string pokazISBN();
int nastepnastrona();
int nastepnywers();
int przejsciedostr();
ksiazka();
};
extern ksiazka ksiazki[20];
klasa.cpp
#include <string>
#include <iostream>
#include <conio.h>
#include "klasa.h"
#include "main.h"
std::string ksiazka::pokaztytul()
{
return tytul;
}
std::string ksiazka::pokazautora()
{
return autor;
}
std::string ksiazka::pokazISBN()
{
return ISBN;
}
int ksiazka::nastepnastrona()
{
if (obecnastrona == iloscstron)
{
std::cout << "To jest ostatnia strona nie mozna przejsc dalej." << std::endl;
}
else
{
obecnastrona++;
}
return 0;
}
int ksiazka::nastepnywers()
{
if (obecnywers == iloscwersow)
{
obecnastrona++;
}
else
{
obecnywers++;
}
return 0;
}
int ksiazka::przejsciedostr()
{
int strona = 4;
for(;;)
{
if(strona > 0 && strona < iloscstron)
{
obecnastrona = strona;
break;
}
else
{
std::cout << "To nie jest poprawny numer strony. Podaj prawidlowy numer strony."<<std::endl;
}
}
return 0;
}
ksiazka::ksiazka()
{
obecnastrona = 1;
obecnywers = 1;
}
Nie wiem w czym tkwi problem, więć byłbym kontent jeśli ktoś by mi pomógł.