Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
模板:名称解析-->;有谁能为这句话举出另一个例子吗 这是ISO C++标准14.6/8:< /P>的陈述。_C++_Templates - Fatal编程技术网

模板:名称解析-->;有谁能为这句话举出另一个例子吗 这是ISO C++标准14.6/8:< /P>的陈述。

模板:名称解析-->;有谁能为这句话举出另一个例子吗 这是ISO C++标准14.6/8:< /P>的陈述。,c++,templates,C++,Templates,查找模板定义中使用的名称声明时,通常的查找规则用于非依赖名称。依赖于模板参数的名称的查找将推迟,直到知道实际的模板参数(14.6.2) 例如: #include <iostream> using namespace std; template<class T> class Set { T* p; int cnt; public: Set(); Set<T&

查找模板定义中使用的名称声明时,通常的查找规则用于非依赖名称。依赖于模板参数的名称的查找将推迟,直到知道实际的模板参数(14.6.2)

例如:

  #include <iostream>
  using namespace std;
  template<class T> class Set {
            T* p;
            int cnt;
  public:
            Set();
            Set<T>(const Set<T>&);
            void printall()
            {
                        for (int i = 0; i<cnt; i++)
                                   cout << p[i] << ’\n’;
            }
            // ...
  };
#包括
使用名称空间std;
模板类集{
T*p;
int-cnt;
公众:
Set();
集合(常数集&);
void printall()
{
对于(inti=0;i
T*p;
...

对于(int i=0;i仅查看模板,您能否告诉我
p[i]
的类型是什么?否。
Set
p[i]
的类型将是
int
p[i]的类型
Set
中的
将是
std::string
。因此,
操作符模板的查找具有
依赖名称
非依赖名称
的概念。简单地说,依赖名称是以某种方式依赖于模板参数的名称。在代码“T*p”中,使“p”成为依赖名称,因为它依赖于模板参数
T

现在
cout
T* p;
...
for (int i = 0; i<cnt; i++)
    cout << p[i] << ’\n’;
// In Set<T>
void reverse()
{
  for (int i = 0; i <= cnt-i; ++i)
  {
    using std::swap;
    swap(p[i], p[cnt-i]);
  }
}
ostream& operator << (ostream &os, T const &t);