Мне трудно получить точное значение этих терминов в C ++.Кажется, что есть много общего между собой (по крайней мере, typedef и namespace).Подскажите, пожалуйста, почему эти понятия были изобретены в C ++?и в каких сценариях мы должны использовать каждый из них?
Также это обсуждение особенно запутанно.Там написано, что typedef и using одинаковы.Меня удивляет, почему у нас два разных термина, если они почти одинаковые?
Из-за плохого понимания этих терминов я кодировал следующее и получил ошибку, показанную ниже:
Files.hpp
#include <boost/filesystem.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/operations.hpp>
#include <iostream>
#include <vector>
#include <string>
#include <utility>
#include <algorithm>
#include <fstream>
#include <ostream>
#include <iomanip>
#include <cmath>
class Files {
public:
//@Brief: We create some short forms for long type names
typedef boost::filesystem FS; //! Short form for boost filesystem
// Short form for file name pairs (for example, <200.jpg, 200>)
typedef std::pair<FS::path, int> file_entry;
// Short form for vector of tuples
typedef std::vector<file_entry> vec;
// Short form for iterator of type, boost::filesystem::directory_iterator
typedef FS::directory_iterator dirIter;
};
Ниже приводится ошибка make , которую я получаю:
...../include/Files.hpp:10:20: error: ‘filesystem’ in namespace ‘boost’ does not name a type
typedef boost::filesystem FS; //! Short form for boost filesystem