У меня есть основной класс, в котором я пытаюсь вызвать функцию для создания меню, но я продолжаю получать эту ошибку:
ошибка 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;
}
Я думаю, что это что-то простое, но я просто не могу понять это. Я пытался удалить статические, а также изменить функцию на пустую функцию, но ни одна не работала.
static int menu ()
{
bunch of menu code
return 0;
}
должно быть
int Control::menu ()
{
bunch of menu code
return 0;
}
Это правильный способ определения членов.
Статическая функция с ее прототипом должна быть такой.
int Control :: menu()
{
//bunch of menu code
return 0 ;
}
Пока вы реализуете класс в другом файле, вы также должны использовать имя класса с оператором разрешения области видимости.
У вас также есть дополнительное двоеточие в конце урока Main
в результате синтаксическая ошибка.