C++ C++;模板-需要主表达式

C++ C++;模板-需要主表达式,c++,c++11,templates,C++,C++11,Templates,在cygwin环境下使用GCC/G++编译器编译以下程序时出错- /src/Template_1.cpp:66:2:错误:应在“Template”之前使用主表达式 TemplateTemplateCall::TemplateCall; ^ 我的源代码如下:- #include<iostream> #include<cstdarg> using namespace std; template<class T> class TemplateCall {

在cygwin环境下使用GCC/G++编译器编译以下程序时出错- /src/Template_1.cpp:66:2:错误:应在“Template”之前使用主表达式 TemplateTemplateCall::TemplateCall; ^

我的源代码如下:-

#include<iostream>
#include<cstdarg>


using namespace std;

template<class T>
class TemplateCall
{
        private:
                T dataValue;
        public:
                TemplateCall(T somethingValue);
                void showTTParam();
};


template<class T>
TemplateCall<T>::TemplateCall(T somethingValue)
{
        cout << endl << " Calling TemplateCall - constructor " << endl;
        dataValue = somethingValue;
}

template<class T>
void TemplateCall<T>::showTTParam()
{
        cout << endl << " TemplateTemplateParam - showTTParam " << endl;
        cout << endl << " dataValue - showTTParam " << dataValue << endl;
}



int main()
{

        template TemplateCall<int>;

        return 0;
}
#包括
#包括
使用名称空间std;
模板
类模板调用
{
私人:
T数据值;
公众:
TemplateCall(T somethingValue);
void showTTParam();
};
模板
TemplateCall::TemplateCall(T somethingValue)
{

cout要创建
TemplateCall
的实例,您需要使用:

TemplateCall<int> obj;
templatecallobj;
更新,回应OP的评论

要显式实例化类模板,请使用

template class TemplateCall<int>;
模板类TemplateCall;

但是您需要在所有函数之外使用它。

要创建
TemplateCall的实例,您需要使用:

TemplateCall<int> obj;
templatecallobj;
更新,回应OP的评论

要显式实例化类模板,请使用

template class TemplateCall<int>;
模板类TemplateCall;

但是你需要在所有函数之外使用它。

你想用
模板TemplateCall;
做什么?你想用
模板TemplateCall;
做什么?实际上我需要用“显式实例化”进行测试。您能解释一下,如果在函数外部定义,它工作,而在函数中使用时不工作的原因吗。来源:-显式实例化模板类名<参数列表>;(1)外部模板类名<参数列表>;(2)(自C++11)1)显式实例化定义2)显式实例化声明显式实例化定义强制实例化它们引用的类、结构或联合。它可能出现在程序中模板定义之后的任何位置,并且对于给定的参数列表,在整个程序中只允许出现一次。关于,Nandu Mishra@NANDUMISHRA来自C++11标准(14.7.2/3):如果显式实例化中声明的名称是非限定名称,则显式实例化应出现在声明其模板的命名空间中,或者,如果该命名空间是内联的(7.3.1),则出现在其封闭命名空间集中的任何命名空间中“显式实例化”。请您解释一下,如果在函数外部定义,它会工作,而在函数中使用时不工作的原因。来源:-显式实例化模板类名<参数列表>;(1)外部模板类名<参数列表>;(2)(自C++11)1)显式实例化定义2)显式实例化声明显式实例化定义强制实例化它们引用的类、结构或联合。它可能出现在程序中模板定义之后的任何位置,并且对于给定的参数列表,在整个程序中只允许出现一次。关于,Nandu Mishra@NANDUMISHRA根据C++11标准(14.7.2/3):如果显式实例化中声明的名称是非限定名称,则显式实例化应出现在声明其模板的名称空间中,或者,如果该名称空间是内联的(7.3.1),则其封闭名称空间集中的任何名称空间中。