C++ 命名空间未声明但已声明?

Tom*_*mmy 6 c++ namespaces

我有一个编译时间问题。刚接触 C++,所以我相信这很简单。我得到了当前的错误。

diarydb.cpp: In function ‘bool editdate(int, mysqlpp::Connection&)’: diarydb.cpp:413:
error: ‘format_tests’ has not been declared
Run Code Online (Sandbox Code Playgroud)

但是 diardby.cpp 我在这里声明了 format_tests

namespace format_tests {
  bool testdateformat(string &date);
  bool tesettimeformat(string &time);
  bool lengthcheck(string &in,int length);

}
Run Code Online (Sandbox Code Playgroud)

和

bool format_tests::testdateformat(string &date){
  // tests format of dat input for MYSQL form at of YYYY-MM-DD
  // Need to tweak regex to restrict 0 < MM < 12 and 0 < DD <31.

  const boost::regex e("\\d{4}\\x2D\\d{2}\\x2D\\d{2}");
  return boost::regex_match(date,e);
}
Run Code Online (Sandbox Code Playgroud)

此处调用的编译器编译器。

  bool dbsetget::editdate(int e_id,mysqlpp::Connection &con){

        char evdate[11];

    cout << "Input start time" << endl;
    cin.getline(evdate,11,'\n'); // restrict legth of input with getline.lenght of input

    string date = evdate;

    if (format_tests::testdateformat(date)){
    mysqlpp::Query query = con.query();
    query <<"UPDATE main SET date="<< quote_only << date <<"WHERE d_Id ="<< e_id;

    return query.exec();
    }
    else
    {
      cerr << "Date not in correct format. YYYY-MM-DD ";
      return false;
    };
  }
Run Code Online (Sandbox Code Playgroud)

我不明白问题是什么?我已经声明了 format_tests 命名空间 任何人都可以指导我吗?

我相信这里也有很多错误,但这一个让我很困惑。

Tom*_*Tom 8

看起来像你拥有的文件

format_tests::testdateformat(date)
Run Code Online (Sandbox Code Playgroud)

看不到

namespace format_tests
{
     bool testdateformat(string &date);
};
Run Code Online (Sandbox Code Playgroud)

您是否包含声明 testdateformat 的头文件?

  • 这可能看起来很简单,但在一个大项目中,我有两个同名的“.hh”文件(在不同的文件夹中),并且由于 makefile 中的问题,我指向了错误的文件并收到此错误。很混乱,但你的回答帮助我找到了问题! (2认同)