文档章节

C++ Properties set get

Industryy
 Industryy
发布于 2015/02/13 10:17
字数 170
阅读 345
收藏 1

// properties.h

#ifndef _PROPERTIES_H
#define _PROPERTIES_H
#define PROPERTY(t,n)  __declspec( property 
( put = property__set_##n, get = property__get_##n ) ) t n;\
typedef t property__tmp_type_##n
#define READONLY_PROPERTY(t,n) __declspec( property (get = property__get_##n) ) t n;\
typedef t property__tmp_type_##n
#define WRITEONLY_PROPERTY(t,n) __declspec( property (put = property__set_##n) ) t n;\
typedef t property__tmp_type_##n

#define GET(n) property__tmp_type_##n property__get_##n()
#define SET(n) void property__set_##n(const property__tmp_type_##n& value)

#endif /* _PROPERTIES_H */

// main.cpp

#include <iostream>
#include <math.h>
#include "properties.h"

class Vector2
{
    public:
        float x;
        float y;

    READONLY_PROPERTY(float, Length);
    GET(Length) 
    { 
        return sqrt((x*x + y*y));
    }
};

int main()
{
    Vector2 vec;
    vec.x = 1;
    vec.y = 1;
    std::cout << "Length of vector(" << vec.x << ", " << vec.y << ") = ";
    std::cout << vec.Length << "\n"; // <--- property, not a function call

    return 0;
}

The above code works with any Visual C++ version above 6.0. It does not need any additional dependencies -- as the section title states, it is a full example.


本文转载自:http://www.codeproject.com/Articles/118921/C-Properties

共有 人打赏支持
Industryy
粉丝 2
博文 13
码字总数 7500
作品 0
浦东
程序员
私信 提问
Apache Qpid Proton 0.12.0 发布

Apache Qpid Proton 0.12.0 发布,该版本包含新的 C++ 版本的 Proton API。详细的改进内容请看发行说明。 新特性和改进包括: PROTON-1037 - Add support for setting/getting message prop...

oschina
2016/02/17
860
0
【转载】MSVCR100.dll和MSVCP100.dll的区别

MSVCR100.dll This msvcr100.dll is the Microsoft Visual C++ Redistributable dll that is needed for projects built with Visual Studio 2010. The dll letters spell this out. MS = Mi......

摩云飞
2012/10/24
0
0
用Eclipse+CDT+MinGW+SVN搭建跨平台的开发环境

Windows环境: 1、 安装Eclisp+CDT; 2、 安装MinGW,设置环境变量。例如: set path=%path%;D:"MinGW"bin set LIBRARY_PATH=D:"MinGW"lib set CINCLUDEPATH=D:"MinGW"include set CPLUSINCL......

iTeacher
2010/12/27
0
0
android ffmpeg4.0.2编译过程记录

这里记录一下ffmpeg的编译过程并且在Andorid中使用的过程。 编译ffmpeg 这里拿的当前日期最新的release版本ffmpeg4.0.2,编译环境mac,下载mac版本的ffmepg后进行编译,编译脚本build.sh如下...

JerryLin123
10/27
0
0
用LuaBridge为Lua绑定C/C++对象

最近为了总结Lua绑定C/C++对象的各种方法、第三方库和原理,学习了LuaBridge库为Lua绑定C/C++对象,下面是学习笔记,实质是对该库的Reference Manual基本上翻译了一遍,学习过程中测试代码,...

shezjl
2015/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

[LintCode] Serialize and Deserialize Binary Tree(二叉树的序列化和反序列化)

描述 设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。 如何反序列化或序列化二叉树是没有限制的,你...

honeymose
今天
5
0
java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
23
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
18
0
my.ini

1

architect刘源源
今天
16
0
docker dns

There is a opensource application that solves this issue, it's called DNS Proxy Server It's a DNS server that solves containers hostnames, if could not found a hostname that mat......

kut
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部