这些代码有什么不同:
std::string dirName = argv[1];
MyRecordDatabaseType myDB(Selector<std::string>((std::string)dirName));
和
std::string dirName = argv[1];
MyRecordDatabaseType myDB(Selector<std::string>(dirName));
我不知道为什么第二个版本不能编译。
编译器告诉我:
error: request for member ‘createGroupWriter’ in ‘myDB’, which is of non-class type ‘main(int, char**)::MyRecordDatabaseType(Selector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >)’
在线:
MyRecordDatabaseType::writer_type myWriter(myDB.createGroupWriter(groupName));
很抱歉,但我无法向您展示Selector或任何其他类的代码。
也许你没有那个可以帮助我?
答案 0 :(得分:7)
是的,区别在于这一行
MyRecordDatabaseType myDB(Selector<std::string>(dirName));
也可以写成
MyRecordDatabaseType myDB(Selector<std::string> dirName);
并且是函数myDB
的声明,它返回MyRecordDatabaseType
。