Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
276 views
in Technique[技术] by (71.8m points)

Trouble with identifying why the IDE is saying undeclared identifier in C++

I have a class at the moment with these lines of code. What I am struggling with is the function write in that my IDE says "Use of undeclared identifier for root"

Why is this?

template<typename T>
    class X
    {
    public:
        const void write(std::ostream & output);

    private:
        std::unique_ptr< TreeNode<Ty> > root;


    };


    const void write(std::ostream & output)
    {
        root->write(output);
    }

Edit to show more full extent of the code with the Template.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Try using the scope resolution operator to tell the compiler that your write function belongs to class X:

const void X::write(std::ostream & output)
{
    root->write(output);
}

Edit 1: templates
With templates, the syntax becomes:

template<typename T>
const void
X<T>::write(std::ostream & output)
{
    root->write(output);
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.9k users

...