通过模板化类中的成员函数返回不可修改的引用

Returning an unmodifiable reference through a member function in a templated class

本文关键字:返回 函数 引用 修改 成员      更新时间:2023-10-16

我对C++很陌生,我正在尝试返回一个不可修改的引用。我收到此错误:

 __error C2365: 'NVPair<A,B>::name' : redefinition; previous definition was 'data member'
 : see declaration of 'NVPair<A,B>::name'__

NVPair.h

#include<iostream>
using namespace std;
template <typename A, typename B>
class NVPair {
    A name;
    B value;
public:
    NVPair();
    NVPair(const A& nm, const B& vl)
    {
        name = nm;
        value = vl;
    }
     A& name() const                    
    {
        return name;
    }
     B& value() const                   
    {
        return value;
    }
};

如果你们需要更多代码,请告诉我。

除了命名问题之外,声明为 const 的成员函数并返回对数据成员的非 const 引用也会遇到问题:

A& get_name() const                    
{
    return name;
}
// has to be:
const A& get_name() const                    
{
    return name;
}