У меня проблемы с вызовом функции в моем главном из другого класса

У меня есть основной класс, в котором я пытаюсь вызвать функцию для создания меню, но я продолжаю получать эту ошибку:

ошибка LNK2019: неразрешенный внешний символ «public: static int __cdecl Controller :: menu (void)» (? menu @ Controller @@ SAHXZ), на который есть ссылка в функции _main

Это мой основной класс.

#include "Main.h"
using namespace std;

int main ()
{
Control:: menu();
return 0;
}

это Main.h

#pragma once
#include "Control.h"class Main:
{
public:
Main(void);
~Main(void);
int main();

};

Control.h:

#pragma once
#include <iostream>

class Control
{
public:
Control(void);
~Control(void);
static int menu ();
};

и, наконец, контрольный файл cpp:

#include "Control.h"using namespace std;

static int menu ()
{
bunch of menu code
return 0;
}

Я думаю, что это что-то простое, но я просто не могу понять это. Я пытался удалить статические, а также изменить функцию на пустую функцию, но ни одна не работала.

0

Решение

static int menu ()
{
bunch of menu code
return 0;
}

должно быть

int Control::menu ()
{
bunch of menu code
return 0;
}

Это правильный способ определения членов.

3

Другие решения

Статическая функция с ее прототипом должна быть такой.

int Control :: menu()
{
//bunch of menu code
return 0 ;
}

Пока вы реализуете класс в другом файле, вы также должны использовать имя класса с оператором разрешения области видимости.

У вас также есть дополнительное двоеточие в конце урока Main в результате синтаксическая ошибка.

2

По вопросам рекламы [email protected]