我可以做以下事情:
#define myInt(x) int* x = new int[5]
...
myInt(dog);
dog[1] = 3;
dog[2] = 5;
但我想要的是:
#define myInt x int* x = new int[5]
所以我可以做到
myInt dog;
dog[1] = 3;
dog[2] = 5;
设置此项以删除函数设置的正确方法是什么?
我试图理解Visual C ++ 2010如何在声明一个类时使用指针... cMy *my = new cMy(); --> cMy my;
答案 0 :(得分:3)
使用宏无法执行此操作。你可以这样做:
typedef int myInt[5];
myInt dog;
dog[1] = 3;
dog[2] = 5;
但这意味着dog
是一个数组,而不是一个指针。
我不确定是否在typedef后面隐藏数组类型是一个好主意。
答案 1 :(得分:3)
根据您的目的,您还可以创建一个类并重载下标([])运算符,例如:
class myInt
{
private:
int m_List[5];
public:
int& operator[] (const int nIndex)
{
return m_List[nIndex];
}
};
然后你也可以写:
myInt dog;
dog[1] = 3;
dog[2] = 5;
答案 2 :(得分:0)
你做不到。宏总是使用括号作为参数。你用什么来定义:
#define myInt x int* x = new int[5]
是从myInt
到x int* x = new int[5]
的替代品,而这几乎不是您想要的。
坚持第一个变种。