在C++中创建对象指针
Creating object pointers in C++
我正在尝试创建一个对象,我想在开关盒中填充该对象,但这超出了我的知识范围。
我有这些构造函数:
cObj::cObj()
{
}
cObj::cObj(std::string filename)
{
//...
}
所以,基本上我想调用以下方法,创建一个指向对象的指针,并将其填充在我的开关机箱中:
void someThing() {
cObj myObj();
switch (someValue)
case 0:
myObj("/some/path");
break;
...
}
我认为我的构造函数是错误的,因为它并没有真正起作用。
我怎样才能做到这一点?
你不需要
指针。
void someThing() {
cObj myObj; // Don't use parentheses for the default constructor.
// What you had was a function declaration, not an object creation.
switch (someValue) {
case 0:
myObj = cObj("/some/path");
break;
...
}
如果你没有默认的构造函数,或者你不希望它被调用,那么你可以使用一个指针,最好是智能的:
void someThing() {
std::unique_ptr<cObj> myObj;
switch (someValue) {
case 0:
myObj.reset(new cObj("/some/path"));
break;
...
}
或者,正如 lmmilewski 所暗示的那样,您可以将决策分解给函数,并返回对象:
cObj choose(someType someValue) {
switch (someValue) {
case 0:
return cObj("/some/path");
...
}
void someThing() {
cObj myObj(choose(someValue));
...
}
在此行中创建对象时
cObj myObj();
(顺便说一句,你可能不想要这些括号。你想要创建一个对象,而不是声明一个函数)。
调用构造函数。您不能在 switch 语句中再次调用它。您可以创建一个单独的方法:
cObj::cObj()
{
}
void cObj::SetFilename(const std::string& filename) {
// ...
}
并像这样使用它:
void someThing() {
cObj myObj;
switch (someValue)
case 0:
myObj.SetFilename("/some/path");
break;
...
}
我不确定您要做什么,但也许更好的方法是首先确定文件路径是什么,然后创建对象?
void someThing() {
std::string filepath = "default/path";
switch (someValue)
case 0:
filepath = "some/path";
break;
...
cObj myObj(flepath);
}
您还可以创建一个函数来决定使用什么路径并返回对象:
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何在没有数据拷贝的情况下从指针创建一个Eigen VectorXd对象
- 如何创建对象函数指针C++映射?
- 如何从绝对地址的 C 样式指针创建对C++对象的引用
- 如何创建指针链?我想创建具有指向更多对象的指针的对象,该对象具有指针.这可能吗?
- 如何创建对象变量,以便每次分配新的指针
- 在堆上创建对象,并通过程序的其余部分通过指针容器访问
- 调用虚拟函数而不通过类类型指针创建任何对象
- 创建对象共享指针以共享指针为参数
- 为什么在创建具有关联指针的对象时使用'new'?
- 从现有指针C 创建一个新对象
- 如何为指针成员创建对象
- 在C++中创建对象时,如何将对象指针推到向量
- 如何在不从参数列表中创建对象的情况下创建指针
- 在C++中创建对象指针
- 从 FILE* 指针创建流对象
- 从常量指针创建用户类的 const 对象
- 在指针数组的链接列表中创建对象时编译错误:C++
- 如何从对象指针向量创建对象值向量
- 指向这个对象的指针创建了什么?