C++ 是否正向声明需要返回到原始类的模板类?
我该如何解开这个结?如果有必要的话,我将使用VisualStudio作为编译器。显然,我们可以将MOO移动到其他类并将其他类向上移动,但这是一个针对现实中正在发生的更复杂问题的模型。我认为这里需要一个前瞻性的定义,但我不确定如何构建它 这个结可以解开吗,或者我必须把sampClass分成两个类,或者一个有接口的类C++ 是否正向声明需要返回到原始类的模板类?,c++,C++,我该如何解开这个结?如果有必要的话,我将使用VisualStudio作为编译器。显然,我们可以将MOO移动到其他类并将其他类向上移动,但这是一个针对现实中正在发生的更复杂问题的模型。我认为这里需要一个前瞻性的定义,但我不确定如何构建它 这个结可以解开吗,或者我必须把sampClass分成两个类,或者一个有接口的类 #include <iostream> class sampClass { public: template <typename Z> othe
#include <iostream>
class sampClass
{
public:
template <typename Z>
otherClass<Z> potato()
{
return otherClass<Z>(this);
}
sampClass(int a)
{
m_a = a;
}
void moo()
{
std::cout << "MOO!";
}
int m_a;
};
template <typename T>
class otherClass
{
public:
otherClass(sampClass* doMoo)
{
doMoo->moo();
}
};
int main()
{
sampClass a(5);
a.potato<int>();
return 0;
}
#包括
类sampClass
{
公众:
模板
其他类别马铃薯()
{
返回其他类(本);
}
sampClass(int a)
{
m_a=a;
}
void moo()
{
std::coutmoo();
}
};
int main()
{
sampClass a(5);
a、 马铃薯();
返回0;
}
只需添加转发声明即可:
#include <iostream>
//
// forward declare otherClass here
//
template <typename T>
class otherClass;
class sampClass
{
public:
template <typename Z>
otherClass<Z> potato()
{
return otherClass<Z>(this);
}
sampClass(int a)
{
m_a = a;
}
void moo()
{
std::cout << "MOO!";
}
int m_a;
};
template <typename T>
class otherClass
{
public:
otherClass(sampClass* doMoo)
{
doMoo->moo();
}
};
#包括
//
//在此转发声明其他类
//
模板
另一类;
类sampClass
{
公众:
模板
其他类别马铃薯()
{
返回其他类(本);
}
sampClass(int a)
{
m_a=a;
}
void moo()
{
std::coutmoo();
}
};
以上otherClass
添加class otherClass代码>且不包含标题。谢谢-模板类与常规类一样适用。你不必概述这个方法。