C++在类数据成员中赋值指针 我有一个C++问题。 我需要做这样的事情 class MyClass { private: MyType *T; public: MyClass (const std::vector<std::string> &S) { MyType new_obj(S); T = &new_obj; } };
问题是,我的新对象在构造函数末尾超出了作用域,因此*T不会成为悬空指针。 我不能这样做:C++在类数据成员中赋值指针 我有一个C++问题。 我需要做这样的事情 class MyClass { private: MyType *T; public: MyClass (const std::vector<std::string> &S) { MyType new_obj(S); T = &new_obj; } };,c++,C++,问题是,我的新对象在构造函数末尾超出了作用域,因此*T不会成为悬空指针。 我不能这样做: MyClass (const std::vector<std::string> &S) { T = MyType new_obj(S); } 因为对于new,我们只能调用默认构造函数。如果可能的话,我宁愿不使用MyType的复制构造函数 对不起,英语不好。非常感谢,祝你度过愉快的一天 因为对于new,我们只能调用默认构造函数 胡说八道 我相信您正在寻找的代码是这样的: My
MyClass (const std::vector<std::string> &S)
{
T = MyType new_obj(S);
}
因为对于new,我们只能调用默认构造函数。如果可能的话,我宁愿不使用MyType的复制构造函数
对不起,英语不好。非常感谢,祝你度过愉快的一天
因为对于new,我们只能调用默认构造函数
胡说八道
我相信您正在寻找的代码是这样的:
MyClass(const std::vector<std::string> &s)
: T(new MyType(s))
{
}
我将在这里冒险,猜测你实际上并不需要一个指针,你只是认为你需要。您之所以这么做,是因为您不知道可以调用成员对象的默认构造函数以外的构造函数。好吧,你可以,用这个
如果我的假设有误,请告诉我,我将删除此答案。为什么您认为只能在默认构造函数中使用new?T=new MyTypeS;?或者更好的MyClassstd::vector const&S:Tnew MyTypeS{},或者更好的使用T的智能指针。为什么T首先是指针?我需要这样做。。。不,你没有。返回对局部变量的引用或指针会调用未定义的行为和/或完全的逻辑错误,并会在以后引起各种各样的乐趣…同意,只有在需要任何多态性时才需要指针。非常感谢,现在我已经了解了它的工作原理
class MyClass {
private:
MyType T;
public:
MyClass (const std::vector<std::string> &S)
:T(S)
{}
};