我有以下练习:
添加代码以使其正常运行。
class MyInt
{
public:
private:
int* MyValue;
}
int main(int argc,char** argv)
{
MyInt x(1);
...//a bit more code where the actual value of x is going to be used.
return 0;
}
我加了一个私人财产
int val;
和一个公共构造师
Myint(int x)
{
val = x;
MyValue = &val;
}
我添加了int-val,作为构造函数为MyVal分配一个非临时对象地址的一种方式,比如x。
有没有一个简洁(呃)的方法来回答这个练习?
我不太清楚为什么要在类中存储指向int
的指针,而不是直接存储值(并且不让指针作为构造函数的输入),但假设您确实需要,下面是您的方法:
MyInt(int x):MyValue(new int(x)){}
但这是一种非常非常糟糕的风格,你必须有充分的理由这样做。您还需要记住在类销毁时释放指针:
~MyInt(){delete MyValue;}
另一种方式:
MyInt(int x) : MyValue(new int(x)) {}
这不需要额外的成员。但是,您必须确保在析构函数中释放内存。
~MyInt() { delete MyValue; }
在您最初的问题陈述中,我没有看到任何要求将指针初始化为int
的地址的内容。修复该示例所需的最低代码是添加一个构造函数,该构造函数接受int
,并将MyValue
初始化为nullptr
。
class MyInt
{
public:
MyInt(int) {}
private:
int* MyValue = nullptr;
};
int main(int argc,char** argv)
{
MyInt x(1);
return 0;
}
如果编译器不支持C 11,那么
class MyInt
{
public:
MyInt(int) : MyValue(NULL) {}
private:
int* MyValue;
};
我试图包装两个C++类:Cluster和ClusterTree。ClusterTree有一个方法get_current_cluster(),它实例化一个集群对象,并返回对它的引用。ClusterTree拥有集群对象,并在C++中管理其创建和删除。 我用cython包装了Cluster,生成了PyCluster。 PyCluster应该有两种创建方式: 1)通过传入两个数组,这意味着Python应该
问题内容: 在Java中,但是在其他OO语言中,初始化属性定义之间也有区别,例如 并使用构造函数对其进行初始化? 我想不出任何实际的区别,有没有?否则,即使结果相同,是否存在一种方法优于另一种方法的情况? 问题答案: 初始化顺序在这里很重要。 将字段设置为默认初始值(0,false,null) 调用对象的构造函数(但不要执行构造函数的主体) 调用超类的构造函数 使用初始化程序和初始化块初始化字段
问题内容: 另一个链接的问题是在使用strcpy()时出现细分错误吗? 我有一个结构: 如何初始化指向上述类型结构的指针,以及如何初始化指向结构内部的10个字符串(incall [])的指针。 我首先初始化字符串,然后初始化结构。 谢谢。 编辑:我猜我用错了字,应该说分配。实际上,我将此结构作为线程的参数传递。线程数不是固定的,作为参数发送的数据结构对于每个线程都必须是唯一的,并且是“线程安全的”
问题内容: 初始化有序词典(OD)以便保留初始数据顺序的正确方法是什么? 题: 在初始化时是否会保留元组列表的顺序,元组的元组或列表的元组或列表的列表等的顺序(上述第二和第三示例)? 如何验证是否实际维持订单?由于a具有不可预测的顺序,如果我的测试向量幸运地具有与dict不可预测的顺序相同的初始顺序,该怎么办?例如,如果不是我写,我会错误地得出结论认为该顺序已保留。在这种情况下,我发现a是按字母顺
我想在构造函数中初始化二维数组。但是,我在类中声明数组的实例变量时遇到了一个问题。如果我这样做就错了: 我怎么解决这个问题?
问题内容: 用RefluxJS异步初始化数据的正确方法是什么?是否有类似于AngularJS的解决方案,或者Flux的实现与此无关(路由器应该处理此职责)? 问题答案: 在应用程序的顶级组件中,使用方法(docs)触发获取数据的操作。最初渲染组件时将调用此方法。 例如: