【发布时间】:2016-06-02 03:05:32
【问题描述】:
我有一个这样的结构
struct Observation
{
observation_id id;
ObsVector z;
ObsMatrix R;
double confidence;
typedef boost::shared_ptr<Observation> Ptr;
typedef boost::shared_ptr<const Observation> ConstPtr;
};
所以我有一个文件 EFK.h 我需要一个 struct Observation
class EFK
{
public:
Observation::Ptr observer (new Observation);
/// Something else
}
所以在EFK.cpp文件中我想使用结构体的一些变量
void EFK::update (ObsVector input, ObsVector delta)
{
/// Some stuff
input.z = observer->z -delta.z;
}
但是当我编译时我得到了这个
*error: invalid use of member function (did you forget the ‘()’ ?)
input.z = observer->z - delta.z;*
^
我不知道为什么。这与 boos::shared_ptr 有关系吗?
谢谢
【问题讨论】:
-
我认为这与
Observation::Ptr observer (new Observation);声明一个函数而不是一个变量有关。 (虽然这对我来说看起来像是一个无效的函数声明) -
@immibis Clang 的“尝试修复它并继续运行”以获取更明智的错误消息的政策似乎是这里的罪魁祸首。 melpon.org/wandbox/permlink/ot3kY4jkk17ch7Lk