Я получаю эту ошибку, и я не уверен, как ее исправить, #include "stdafx.h"
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class Puzzle {
public:
virtual bool action(char [][8], int, int) = 0;
virtual void print_solution(char [][8], int) = 0;
};
class Queen8: public Puzzle {
public:
bool action(char Q[][8], int row, int col) {
for (int r = 0; r < row; r++) {
if (Q[r][col] == '1') {
return false;
}
}
for (int r = row, c = col; r >= 0 && c >= 0; r--, c--) {
if (Q[r][c] == '1') {
return false;
}
}
for (int r = row, c = col; r >= 0 && c < 8; r--, c++) {
if (Q[r][c] == '1') {
return false;
}
else {
return true;
}
}
}
void print_solution(char Q[][8], int row) {
if (row == 8)
{
for (int r = 0; r < 8; r++) {
for (int c = 0; c < 8; c++)
cout << Q[r][c] << " ";
cout << endl;
}
cout << endl;
return;
}
for (int c = 0; c < 8; c++) {
if (action(Q, row, c)) {
Q[row][c] = '1';
print_solution(Q, row + 1);
Q[row][c] = '0';
}
}
}
};
int main() {
Puzzle Queen8;
char Q[8][8];
for (int r = 0; r < 8; r++) {
for (int c = 0; c < 8; c++) {
Q[r][c] = '0';
}
}
Queen8.print_solution(Q, 0);
}
Точная ошибка:
c: \пользователи \ delta \ onedrive \ Documents \ visual studio 2013 \ projects \ consoleapplication46 \ consoleapplication46 \ consoleapplication46.cpp (60): ошибка C2259: 'Puzzle': невозможно создать экземпляр абстрактного класса
1> из-за следующих членов:
1> 'Головоломка bool :: action (char [] [8], int, int)': абстрактная
1> c: \ users \ delta \ onedrive \ Documents \ visual studio2013 \ projects \ consoleapplication46 \ consoleapplication46 \ consoleapplication46.cpp (9): см. Объявление 'Puzzle :: action'
1> 'void Puzzle :: print_solution (char [] [8], int)':является абстрактным
1> c: \ users \ delta \ onedrive \ Documents \ visual studio 2013 \ projects \ consoleapplication46 \ consoleapplication46 \ consoleapplication46.cpp (10): см. объявление 'Puzzle :: print_solution'