这个问题是相当理论化的,尽管有趣的是,MS VS2010会main
像处理函数声明一样处理以下变量声明(内部):
typedef std::shared_ptr<asymm::PrivateKey> PrivateKeyPtr;
...
void main()
{
...
maidsafe::dht::PrivateKeyPtr pk(); // I'm trying to init variable here, though it thinks it's function declaration
kNode->node()->Store(key, value, "", ttl, pk, std::bind(&StoreCallback, args::_1, key, ttl));
}
Run Code Online (Sandbox Code Playgroud)
它抛出以下异常:
Error 5 error C2664: 'maidsafe::dht::Node::Store' : cannot convert parameter 5 from 'maidsafe::dht::PrivateKeyPtr (__cdecl *)(void)' to 'maidsafe::dht::PrivateKeyPtr' C:\Projects\MaidSafe-DHT\src\maidsafe\dht\demo\demo_main.cc 286 1 KademliaDemo
Run Code Online (Sandbox Code Playgroud)
虽然以下几行像魅力一样:
maidsafe::dht::PrivateKeyPtr pk = maidsafe::dht::PrivateKeyPtr();
kNode->node()->Store(key, value, "", ttl, pk, std::bind(&StoreCallback, args::_1, key, ttl));
Run Code Online (Sandbox Code Playgroud)
声明它没有()
:
maidsafe::dht::PrivateKeyPtr pk;
Run Code Online (Sandbox Code Playgroud)
不幸的是,对于提供未初始化值的原始类型,但在C++ 11中,您可以使用以下值进行初始化{}
:
maidsafe::dht::PrivateKeyPtr pk{};
Run Code Online (Sandbox Code Playgroud)
有关相关的解析问题,请参阅c ++最烦恼的解析.
归档时间: |
|
查看次数: |
278 次 |
最近记录: |