可以转换C#get,将代码设置为C++;

可以转换C#get,将代码设置为C++;,c#,c++,visual-studio-2010,visual-c++,C#,C++,Visual Studio 2010,Visual C++,我在C#中有以下代码: 是否可以将其转换并以这种方式使用get和set?我知道您不能这样声明,我需要“:”来声明,但当我尝试这样做时: public: std::string Temp { get { return sTemp; } set { sTemp = value; this.ComputeTemp(); } 我收到的错误出现在第一个

我在C#中有以下代码:

是否可以将其转换并以这种方式使用get和set?我知道您不能这样声明,我需要“:”来声明,但当我尝试这样做时:

public:
        std::string Temp
        {
        get { return sTemp; }
        set { 
                sTemp = value;
                this.ComputeTemp();
            }

我收到的错误出现在第一个“{”上,说明
应为“;”
。有没有关于如何修复它的建议?

是否使用C++/CLI?如果是,则这是属性语法

public:
  property std::string Temp { 
    std::string get() { return sTemp; }
    void set(std::string value) { sTemp = value; this->ComputeTemp(); } 
  }

如果你想使用普通C++,那么你就不走运了。对于普通C++代码来说,没有等价的特征。你需要求助于GETER和SETTER方法< /P>

public:
  std::string GetTemp() const { return sTemp; } 
  void SetTemp(const std::string& value) { 
    sTemp = value;
    this->ComputeTemp();
  }

要从类似问题复制粘贴我的答案,请执行以下操作:

警告:这是一种开玩笑的反应,太可怕了!!!

是的,有点可能:)


可以使用<代码> yO-DEXSPEC(属性)< /> >,像这样:

public:
    __declspec(property(get=get_Temp, put=set_Temp)) std::string Temp;

    const std::string& get_Temp { return sTemp; }
    void set_Temp(std::string value) { 
            sTemp = std::move(value);
            this->ComputeTemp();
    }

请注意,这种方式的属性使类比其他方式稍微大一点be@MooingDuck,正确-但我也建议首先这样做,因此最重要的免责声明是-可以这样做…只是..是的…;)复制
Test
Test::operator=
的构造是灾难性的。你需要要么正确处理它,要么阻止它。哦,你可以通过简单地放弃
语法来摆脱开销,拥有一个工作的
操作符=
。使用
静态测试属性文本;
将一个名称引入全局范围,并对
操作符^
进行适当的覆盖,你可以得到
a^text=“blah”
工作到工作,运行时开销为零。为了增加C#ness,
Test*a;a^text
Test a;a^text
都可以做同样的事情:当语句中有
Test
对象时,为什么要存储它,我们只需要一些表达式模板mojo就可以抓住它并使用它!主持人注意:这个问题哈如果您想评论它的准确性,请访问。谢谢。可能重复的。但是,最好直接使用
get\u Temp/set\u Temp
,而不使用属性
Temp
,因为在访问/修改Temp的地方使用grep更容易。在后一种情况下,标准命名约定对于getter来说似乎是
T temp()
,对于setter来说似乎是
void temp(T值)
。@codesin混乱我肯定看到了两种方法(Get/Set前缀和no prefix)。我个人的偏好是使用Get/Set前缀,这可能是我早期Java时代遗留下来的
template<typename T>
class Property
{
private:
    T& _value;

public:
    Property(T& value) : _value(value)
    {
    }   // eo ctor

    Property<T>& operator = (const T& val)
    {
        _value = val;
        return(*this);
    };  // eo -

    operator const T&() const
    {
        return(_value);
    };  // eo ()
};
class Test
{
private:
    std::string m_Test;

public:
    Test() : text(m_Test)
    {
    };

    Property<std::string> text;
};
Test a;
a.text = "blah";

std::string content = a.text;
public:
    __declspec(property(get=get_Temp, put=set_Temp)) std::string Temp;

    const std::string& get_Temp { return sTemp; }
    void set_Temp(std::string value) { 
            sTemp = std::move(value);
            this->ComputeTemp();
    }