Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 单例模式-无法在没有对象的情况下调用成员函数_C++_Oop_Pointers_Singleton_Member - Fatal编程技术网

C++ 单例模式-无法在没有对象的情况下调用成员函数

C++ 单例模式-无法在没有对象的情况下调用成员函数,c++,oop,pointers,singleton,member,C++,Oop,Pointers,Singleton,Member,我对单例和面向对象编程都是新手,我的代码有点问题。我在这里搜索了“不能在没有对象的情况下调用成员函数”,但引擎返回了一些与单例无关的主题。 这是我的代码,编译器告诉我“不能在没有对象的情况下调用成员函数'void mySingleton::set_value(int)”。你对我如何解决这个问题有什么想法吗 #include <iostream> class mySingleton{ private: int value; static mySing

我对单例和面向对象编程都是新手,我的代码有点问题。我在这里搜索了“不能在没有对象的情况下调用成员函数”,但引擎返回了一些与单例无关的主题。 这是我的代码,编译器告诉我“不能在没有对象的情况下调用成员函数'void mySingleton::set_value(int)”。你对我如何解决这个问题有什么想法吗

#include <iostream>

class mySingleton{

private:
        int value;
        static mySingleton *_pInstance;
        mySingleton(int Value=0) {value=Value;}
public:
    ~mySingleton() {value=0;}

    static mySingleton *getInstance()
    {
        if(!_pInstance) _pInstance=new mySingleton;
        return _pInstance;
    }

    int  get_value()        {return value;}
    void set_value(int x=0) {value=x;}

};

mySingleton *mySingleton::_pInstance=NULL;

int main()
{

    std::cout << "Initial value:" << mySingleton::getInstance()->get_value() << std::endl;
    mySingleton::set_value(5);
    std::cout << "Modified value: " << mySingleton::getInstance()->get_value() << std::endl;
    return 0;
}
#包括
迈辛格尔顿班{
私人:
int值;
静态mySingleton*_pInstance;
迈辛格尔顿(int值=0){Value=Value;}
公众:
~mySingleton(){value=0;}
静态mySingleton*getInstance()
{
如果(!\u pInstance)\u pInstance=new mySingleton;
返回站姿;
}
int get_value(){return value;}
无效集合_值(int x=0){value=x;}
};
mySingleton*mySingleton::_pInstance=NULL;
int main()
{

std::不能用调用
get_value()
的方法调用它。谢谢,这很有效!但是如果我想声明一个或两个这种类型的对象,我知道它们会指向相同的地址,但是键入“mySingleton*a1;a1=new mySingleton;”不起作用。
想声明一个或两个这种类型的对象吗?
如果这种类型的对象可能不止一个,那么它就不会是一个很单一的对象了,不是吗?我想我没有说清楚。当我说“我想声明一个或两个这种类型的对象”时我想说,我想创建两个对singleton的引用。对不起,我的错。
mySingleton*a1=mySingleton::getInstance();mySingleton*a2=a1;
随心所欲地复制指针。