只是一个快速和简单的问题,但任何文档中找不到它。

template <class T>
T* Some_Class<T>::Some_Static_Variable = NULL;

它编译使用g ++,但我不知道这是否是有效的使用。是什么?

有帮助吗?

解决方案

是这个代码是正确的。看到此C ++模板教程以获取更多信息

的http:// WWW。 is.pku.edu.cn/~qzy/cpp/vc-stl/templates.htm#T14

其他提示

这是合法的C ++,但没有任何一个模板赋值运算符?所述片段定义SomeClass<T>的静态成员,并将其初始值NULL。这是罚款,只要你只能做一次,否则你就可怕One Definition Rule步骤。

一个模板赋值运算符是这样的:

class AClass {
public:
    template <typename T>
    AClass& operator=(T val) {
        std::ostringstream oss;
        oss << val;
        m_value = oss.str();
        return *this;
    }
    std::string const& str() const { return m_value; }
private:
    std::string m_value;
};

std::ostream& operator<<(std::ostream& os, AClass const& obj) {
    os << obj.str();
    return os;
}

int main() {
    AClass anObject;
    anObject = 42;
    std::cout << anObject << std::endl;
    anObject = "hello world";
    std::cout << anObject << std::endl;
    return 0;
}

在模板赋值运算符是用于实现变体样类时提供的转化最有用的。现在有很多,如果你要使用,虽然这些小动物,你应该考虑到需要注意的地方。甲谷歌搜索会调高问题的情况。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top