为什么这段代码不能编译?

Adi*_*Adi 1 c++ compiler-errors

这些代码有什么不同:

std::string dirName = argv[1];
MyRecordDatabaseType myDB(Selector<std::string>((std::string)dirName));
Run Code Online (Sandbox Code Playgroud)

std::string dirName = argv[1];
MyRecordDatabaseType myDB(Selector<std::string>(dirName));
Run Code Online (Sandbox Code Playgroud)

我不知道为什么第二个版本不能编译.

编译器告诉我:

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> > >)’
Run Code Online (Sandbox Code Playgroud)

在线:

MyRecordDatabaseType::writer_type myWriter(myDB.createGroupWriter(groupName));
Run Code Online (Sandbox Code Playgroud)

抱歉,但我无法向您展示Selector或任何其他类的代码.

也许你没有那个可以帮助我?

Bo *_*son 7

是的,区别在于这一行

MyRecordDatabaseType myDB(Selector<std::string>(dirName)); 
Run Code Online (Sandbox Code Playgroud)

也可以像

MyRecordDatabaseType myDB(Selector<std::string>  dirName); 
Run Code Online (Sandbox Code Playgroud)

并且是一个myDB返回函数的声明MyRecordDatabaseType.

请参阅C++最烦恼的解析

  • @iammilind:不是它可以删除.它更像是你可以自由添加它们. (2认同)