Создание класса Die с виртуальными функциями C ++

0

im пытается создать программу C++ Die, которая содержит функцию виртуального ролика, которая просто возвращает число от 1 до количества сторон. Я только начал программу, и я пришел к ошибке, которую я никогда не видел и вообще не понимаю. Я думаю, это потому, что я не реализовал виртуальную функцию должным образом, или может быть, как я называю виртуальную функцию в основном классе? но я не уверен, и я не могу найти решение проблемы.

Die.cpp

#include<iostream>
#include <cstdlib>
using namespace std;

class Die{
    public:
        Die();
        Die(int numSide);
        virtual int roll();
        int rollTwoDice(Die d1, Die d2); 

    private:
        int side;
};

Die::Die():side(6){}

Die::Die(int numSide):side(numSide){}

int Die::roll(){
    return rand() % side + 1;
}

int Die::rollTwoDice(Die d1, Die d2){
    return d1.roll()+d2.roll();
}

main.cpp

#include<iostream>
#include<time.h>
#include "Die.cpp"
using namespace std;

int main(){

    srand(time(NULL));  

    Die die();
    cout << die.roll;
    cout << die.roll;
    cout << die.roll;
}

И ошибка:

/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/crt1.o: In function '_start':
(.text+0x20): undefined reference to 'main'
collect2: ld returned 1 exit status

Я скомпилировал это с помощью g++ Die.cpp -o Die на командной строке linux.

  • 0
    Как вы скомпилировали файл?
  • 0
    Какую команду вы использовали для компиляции этого ...
Показать ещё 1 комментарий
Теги:
function
virtual

1 ответ

3
Лучший ответ

Вам нужно разбить Die.cpp на файл заголовка Die.h, содержащий class Die { … }; block с файлом Die.cpp содержащим все определения функций.

Затем .cpp все .cpp файлы во время сборки, чтобы они были связаны друг с другом.

g++ Die.cpp Main.cpp -o Die

Кроме того, эта строка является "самым неприятным анализом". Здесь вы не можете использовать parens:

Die die(); // should be Die die; (no parens)

И наоборот, в этой строке отсутствует оператор вызова функции:

cout << die.roll; // should be roll(); (with parens)
  • 0
    хорошо, но я получаю эту ошибку: Main.cpp: 1: 18: ошибка: Die.cpp: нет такого файла или каталога
  • 0
    @ShadowViper Никогда не #include в .cpp файл. Включаются только заголовочные файлы. Создайте Die.h и убедитесь, что он находится в том же подкаталоге, что и другие файлы.

Ещё вопросы

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