【发布时间】:2017-07-17 22:07:34
【问题描述】:
我成功地将一个类传递给一个模板方法。但是,如果类内部有结构,c++ 编译器不会将通用类型 T 的参数识别为类,并且不允许使用 :: 运算符访问类中的结构。我厌倦了编码的变体,但它不起作用。请考虑我这样做是为了能够将通用类(任何类)传递给此方法,并且我不想在此过程中实例化某个类,否则我不会使用模板:
class IO
{
public:
struct Input
{
double pressure = 100;
};
struct Output
{
double pressure = 110;
};
};
template <class T>
bool B::MethodBT(T IO)
{
IO::Input In;
IO::Output Out;
Out.pressure = In.pressure * 10;
cout << "In Template P= :"<< Out.pressure<<endl;
return true;
}
【问题讨论】:
-
你需要写
T::Input,但它可能需要typename T::Input -
提示:类是 C++中的结构,反之亦然。
-
我在您的代码中没有看到任何模板。