Функция C ++ считает, что объявляется и определяется в одном месте - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь сделать свою самую первую игру с нуля, ti c -ta c -toe. Все еще в части искусства ascii. Итак, я создал один файл заголовка с именем functions и три файла cpp, один с функцией отображения, другой с функцией tictactoe, которая пока отображает только функцию отображения, а третий является основным, который вызывает функцию tictactoe, которая должна отобразить функцию отображения. Проблема в том, что tictactoe cpp думает, что вызываемая функция отображения объявляется и инициализируется там, поэтому вместо этого ничего не делает, поэтому ничего не выводится на экран. Как я могу заставить его найти определение?

ti c -ta c -toe functions.h:

#pragma once
#include <iostream>
using namespace std;
void tictactoegame();
void display(string one = "", string two = "", string three = "", string four = "", string five = "", string six = "", string seven = "", string eight = "", string nine = "");

ti c -ta c - функции схождения. cpp

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

void display(string one, string two, string three, string four, string five, string six, string seven, string eight, string nine)
{
    vector<string> symbols2 = { "                   \n", "   1  |  ", "2  |  ", "3   \n", " _____|_____|______\n", "      |     |      \n", "   4  |  ", "5  |  ", "6   \n", "   7  |  ", "8  |  ", "9   \n" };
    cout << symbols2[0] << symbols2[1] << symbols2[2] << symbols2[3];
    cout << symbols2[4] << symbols2[5] << symbols2[6] << symbols2[7] << symbols2[8];
    cout << symbols2[4] << symbols2[5] << symbols2[9] << symbols2[10] << symbols2[11] << symbols2[0];
    //OR, same as below
    // display's 9 elements is equivelent to the 9 console outputs below:
    //cout << "                   \n"; //1, 0
    //cout << "   1  |  2  |  3   \n"; //2, 1,2,3
    //cout << " _____|_____|______\n"; //3, 4
    //cout << "      |     |      \n"; //4, 5
    //cout << "   4  |  5  |  6   \n"; //5, 6,7,8
    //cout << " _____|_____|______\n"; //6, 4
    //cout << "      |     |      \n"; //7, 5
    //cout << "   7  |  8  |  9   \n"; //8, 9,10,11
    //cout << "                   \n"; //9, 0
}

ti c -ta c -toe logi c. cpp

#include "tic-tac-toe functions.h"

void tictactoegame()
{
    void display();
}

main. cpp

#include <iostream>
#include "tic-tac-toe functions.h"

int main()
{
    tictactoegame();

    system("pause");
}

Дополнительный вопрос: нужна ли мне строка «#pragma once» для заголовка, который был автоматически создан в визуальном Strud ios?

...