c++ - 如何使模板类成为类的友元?

标签 c++ visual-studio-2010 templates visual-c++

考虑以下部分代码:

namespace Util {
    template <class T>
    class SimpleSingleton
    {
    public:
        static T& getOne() {
            if (instance == NULL)
                instance = new T();
            return *instance;
        }
    private:
        static T* instance;
        // ...
    };
    T *Singleton<T>::instance = NULL;
}
class A
{
    friend class Util::Singleton<A>;
    //...
private:
    A() {};
    //...
};
typedef Util::Singleton<A> SingletonA;

void main()
{
    A a = SingletonA::Instance(); // c2248: 'A::A' : cannot access private member declared in class 'A'
}

我在这里做错了什么?

最佳答案

改变

A a = SingletonA::Instance();

A& a = SingletonA::Instance();

如所写,代码尝试复制对象,但复制构造函数是私有(private)的。

关于c++ - 如何使模板类成为类的友元?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14588143/

相关文章:

c++ - 类模板实例化错误: type not declared in this scope

c++ - 随 secret 码生成器上的 OpenMP 多线程

c++ - 分配给 double 的数字上的 F 后缀

c# - Visual Studio 2012 WPF 设计器不显示。它只显示 xaml 源

c++ - 几个模板问题(已经解决了...只是想知道为什么)

c++ - 基类是依赖类型时是否存在缺陷

c++ - sized operator delete[] 永远不会被调用

c++ - 使用 ostream_iterator 的简单文件写入创建文件,但不写入

visual-studio - Visual Studio 2010 代码段生成器

c++ - 阻止我将 VS2010 中的静态库正确链接到我的 .dll 的原因是什么