我無法理解這行從源代碼代碼在github上:這行代碼在C++中意味着什麼?
using NodePtr = std::shared_ptr<Node>;
我讀了cppreference頁面here,但它沒有關於類似的語法的任何信息。盡我所能猜到,它有點像#define
,因爲從現在開始我使用NodePtr
時,它將在內部用std::shared_ptr<Node>
代替它。有了這個,我試圖測試代碼,但它沒有奏效。
代碼:
test.h
:
#ifndef TEST_H_
#define TEST_H_
#include <memory>
#include <string>
#include <vector>
#include <unordered_map>
#include <utility>
#include <typeinfo>
#include <limits>
#include <functional>
namespace nnvm {
class Node;
using NodePtr = std::shared_ptr<Node>;
class Node {
public:
~Node();
inline bool is_variable() const;
inline int num_outputs() const;
inline int num_inputs() const;
};
}
#endif // TEST_H_
test.cpp
:
#include "test.h"
#include <iostream>
static graphy::NodePtr Create();
int main(int argc, char const *argv[])
{
/* code */
graphy::Node *node = new graphy::Node();
std::cout << "Hello Graphy!!" << std::endl;
return 0;
}
以下是錯誤我得到:
In file included from /usr/include/c++/5/unordered_map:35:0,
from test.h:7,
from test.cpp:1:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support \
^
In file included from test.cpp:1:0:
test.h:18:7: error: expected nested-name-specifier before ‘NodePtr’
using NodePtr = std::shared_ptr<Node>;
^
test.cpp:5:14: error: ‘NodePtr’ in namespace ‘graphy’ does not name a type
static graphy::NodePtr Create();
^
當然有。這是[底部的第三個鏈接](http://en.cppreference.com/w/cpp/language/type_alias)。 – Rakete1111
這是一個別名。您可以在代碼中使用'NodePtr'而不是'std :: shared_ptr'。 –
Azeem
請閱讀第一條錯誤消息並按照說明進行操作。 – molbdnilo