【发布时间】:2010-06-19 16:23:41
【问题描述】:
我有这个sn-p的代码:
void addLineRelative(LineNumber number, LineNumber relativeNumber) {
list<shared_ptr<Line> >::iterator i;
findLine(i, number);
if(i == listOfLines.end()){
throw "LineDoesNotExist";
}
line 15 if(dynamic_cast<shared_ptr<FamilyLine> >(*i)){
cout << "Family Line";
} else {
throw "Not A Family Line";
}
}
我有 Line 类并从它派生出来 FamilyLine 和 RegularLine,所以我想找到 FamilyLine
我的程序在第 15 行失败,我收到一个错误
cannot dynamic_cast target is not pointer or reference
有人可以帮忙吗,在此先感谢
已编辑
我试过这个:
shared_ptr<FamilyLine> ptr(dynamic_cast<shared_ptr<FamilyLine> >(*i));
if(ptr){
//do stuff
}
同样的错误
已编辑
void addLineRelative(LineNumber number, LineNumber relativeNumber) {
list<shared_ptr<Line> >::iterator i;
findLine(i, number);
if(i == listOfLines.end()){
throw "LineDoesNotExist";
}
shared_ptr<FamilyLine> ptr(dynamic_pointer_cast<FamilyLine>(*i));
if (ptr){
cout << "Family Line";
} else {
throw "Not A Family Line";
}
}
收到此错误
Multiple markers at this line
- `dynamic_pointer_cast' was not declared in this
scope
- unused variable 'dynamic_pointer_cast'
- expected primary-expression before '>' token
【问题讨论】:
标签: c++ casting shared-ptr