4

例如:

template<class T>
class MyClass
{
public:
    template<class U>
    MyClass<U> doSomething() { return MyClass<U>(); } //can't access private constructor
private:
    MyClass() {}
}

模板伏都教答案等是可以接受的。对我来说最重要的是这个类可以使用不同的模板参数创建和返回自身的实例,但是外部代码不能调用它正在使用的特定构造函数。

4

2 回答 2

4

将以下内容添加到MyClass

template<typename Q> friend class MyClass;

MyClass<int>MyClass<float>解决完全不同的课程。他们对彼此一无所知,并且他们无法访问彼此的私人信息,超过 2 个完全独立的班级。因此,解决方案是让MyClass朋友的每个实例化每隔一个实例化,这样他们就可以看到彼此的私人信息,就好像他们是同一个类一样。

于 2013-02-12T22:02:29.283 回答
1

friend在这种情况下是您的朋友,因为每次您需要限制隐私例外时:

class MyClass {
     template <class U> friend class MyClass;
     ....
于 2013-02-12T22:02:20.337 回答