可以转换C#get,将代码设置为C++
Possible to convert C# get,set code to C++
我在C#中有以下代码:
public string Temp
{
get { return sTemp; }
set {
sTemp = value;
this.ComputeTemp();
}
}
有可能转换这个并以这种方式使用get和set吗?我知道你不能这样申报,我需要":"来申报,但当我尝试这样做时:
public:
std::string Temp
{
get { return sTemp; }
set {
sTemp = value;
this.ComputeTemp();
}
我收到的错误是在第一个"{"声明expected a ';'
上。关于如何修复它,有什么建议吗?
您正在使用C++/CLI吗?如果是,这就是属性语法
public:
property std::string Temp {
std::string get() { return sTemp; }
void set(std::string value) { sTemp = value; this->ComputeTemp(); }
}
如果你试图使用普通的C++,那么你就没有运气了。普通C++代码没有等效的特性。您将需要求助于getter和setter方法
public:
std::string GetTemp() const { return sTemp; }
void SetTemp(const std::string& value) {
sTemp = value;
this->ComputeTemp();
}
复制粘贴类似问题的答案之一:
警告:这是开玩笑的回应,太可怕了
是的,有点可能:)
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;
};
并调用C#样式!
Test a;
a.text = "blah";
std::string content = a.text;
在Visual C++中,您可以使用__declspec(property)
,如下所示:
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();
}
相关文章:
- 如何在大型c++项目的可视化代码中设置调试
- Cmake:为 C 设置警告级别,并为 MSVC 单独设置C++代码(Visual C++)
- 针对代码::块设置的 SFML 故障排除
- 使用代码在 AWS 开发工具包C++控制台应用程序上设置凭证
- 如何使用跨平台代码在C++中设置系统时间?
- 代码在 msvcrt .dll函数上设置断点失败
- 如何在 curl 代码C++设置授权持有者标头?我得到的授权不足,即使它在命令行上工作
- 如何为用户设置仅输入 4 位代码的限制?
- 如何设置 CMake 来构建包含路径包含的代码,如 #include < libdir/lib>?
- QWidget - 从C++代码设置边框
- TCL文件无法获取通过代码设置的环境变量
- Visual Studio代码设置默认配置
- 如何使用此代码设置重力?SFML/C++
- 如何在 CMake 中为本机代码和外部代码设置不同的编译器警告级别
- 从C++代码设置高级打印选项
- 可以转换C#get,将代码设置为C++
- 根据代码设置桌面背景颜色
- GetExitCodeProcess是否有可能将退出代码设置为错误的值?
- 如何使用c++代码设置核心文件名
- 如何从本机代码设置文本框控件中的文本