По какой-то причине, хотя у меня определена функция main (), я получаю ошибку LNK1561.
Мой файл search.h:
#pragma once
#include <iostream>
#include <fstream>
using namespace std;
namespace standard{
class Search
{
public:
bool sequential_find(int num);
bool recursive_binary_find(int num);
bool iterative_binary_find(int num);
void init_array();
void init_sorted_array();
void set_seed(int seed);
int getSize();
bool binSearch(int d, int low, int high);
// this is just for practice and debugging.
friend ostream& operator<< (ostream& out, const Search& s)
{
// put the code in here.
}
Search(int size,int seed=0);
~Search();
private:
int size;
int* array;
static int* data;
};
}
И мой файл search.cpp:
#include "Search.h"
using namespace std;
namespace standard{
int main()
{
return 0;
}
// Search::Search(int size,int seed=0)
// {
//
// }
bool Search::sequential_find(int num)
{
for (int i=0; i<getSize(); i++)
{
if(data[i] == num)
{
return true;
}
}
return false;
}bool Search::recursive_binary_find(int num)
{
int high = getSize()-1;
int low = 0;
return binSearch(num, low, high);
}
bool Search::binSearch(int d, int low, int high)
{
if (low > high)
return false;
int mid = (high+low)/2;
if (d == data[mid])
return true;
if (d < data[mid])
return binSearch(d, low, mid-1);
else
return binSearch(d, mid+1, high);
}
bool Search::iterative_binary_find(int num)
{
int high = getSize()-1;
int low = 0;
while (low <= high)
{
int mid = (high+low)/2;
if (num == data[mid])
return true;
else if (num < data[mid])
high = mid-1;
else if (num > data[mid])
low = mid+1;
}
return false;
}
void Search::init_array()
{
}
void Search::init_sorted_array()
{
}
void Search::set_seed(int seed)
{
}
int Search::getSize()
{
return size;
}
}
Очевидно, я не сделал ничего существенного в своей основной функции, я работаю над тем, чтобы заставить его скомпилироваться вообще.
Вы положили свой main()
функция в standard
Пространство имен. Это не точка входа в вашу программу. Точка входа вашей программы должна находиться в глобальном пространстве имен.
В соответствии с пунктом 3.6.1 / 1 стандарта C ++ 11:
Программа должна содержать Глобальный функция называется
main
, который является назначенным началом программы. Это
определяется реализацией, требуется ли программе в автономной среде для определения основного
функция.
Чтобы решить проблему, просто переместите main()
в глобальном пространстве имен. Также обратите внимание, что return 0
не обязательно. Стекает с конца main()
эквивалентно возвращению 0.
Вы положили main
внутри вашего собственного пространства имен standard
, что делает его функцией, принадлежащей вашему пространству имен, а не глобальной функцией, которая main
должно быть больше.
Для стандарта C ++ 3.6.1:
Программа должна содержит глобальную функцию под названием main, который является назначенным началом программы. Определяется реализацией, требуется ли программе в автономной среде для определения главной функции. […]