专门化函数从其他函数调用



我正试图找出从另一个调用模板专门化函数。在下面的简短片段中,我将尝试从RED调用BLACK特定函数。我得到以下编译错误

不能调用成员函数bool noClass<color>::_open() [with Colors color = (Colors)2]’ without object

非常有意义。如何(或我可以)使呼叫黑从红工作?代码段在noClass c++头文件的下面。

#ifndef COLORS_H
#define COLORS_H
enum class Colors { RED, GREEN, BLACK };
#endif /* COLORS_H */
#ifndef NOCLASS_H
#define NOCLASS_H

    template <Colors color> 
    class noClass {
        public: bool Open ( );
        protected: bool _open ( );
    };
    template <Colors color> bool noClass<color>::Open ( ) { return noClass<color>::_open ( ); }
    template <Colors color> bool noClass<color>::_open ( ) { return true; }
    template <> inline bool noClass<Colors::BLACK>::_open ( ) { return true; }
    template <> inline bool noClass<Colors::RED>::_open ( ) { return noClass<Colors::BLACK>::_open( ); }
#endif /* NOCLASS_H */

不能,因为您没有所需类型的实例。尝试在helper函数中编写通用代码,并让两个专门化都调用它。

最新更新