C++ C++;变量声明被视为函数声明
这个问题相当理论化,但有趣的是,是什么让MS VS2010将以下变量声明(在C++ C++;变量声明被视为函数声明,c++,visual-c++,C++,Visual C++,这个问题相当理论化,但有趣的是,是什么让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
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));
}
以下几句话很有魅力:
maidsafe::dht::PrivateKeyPtr pk = maidsafe::dht::PrivateKeyPtr();
kNode->node()->Store(key, value, "", ttl, pk, std::bind(&StoreCallback, args::_1, key, ttl));
声明它时不带
()
:
不幸的是,对于提供未初始化值的基元类型,但在C++11中,可以使用{}
初始化值:
maidsafe::dht::PrivateKeyPtr pk{};
有关相关的解析问题,请参见。在不使用
()
的情况下声明它:
不幸的是,对于提供未初始化值的基元类型,但在C++11中,可以使用{}
初始化值:
maidsafe::dht::PrivateKeyPtr pk{};
有关相关的解析问题,请参阅
maidsafe::dht::PrivateKeyPtr pk{};