我在基类指针上使用两个memeber函数时遇到了一些麻烦。我有以下代码;
cout << "Please input the translation vector. (x value ' ' y value)" << endl;
cin >> Xtrans >> Ytrans;
cout << endl;
new_shape = Trans + user_input; // adds Tranaslated to the key
for(it = shape_map.begin(); it != shape_map.end(); ++it){// loops over map (it is defined earlier)
cout << endl;
if( it->first == user_input){
cout << "ID " << new_shape << " = " << endl; // ouput the key witch also id's the shape
it->second->translate(matrix(Xtrans, Ytrans))->printshape(); //<-this one
}
}
代码的目的是翻译一个形状(我有几个类型的不同类,这些类派生自一个名为polygon的抽象基类),然后打印新的形状。我有一个单独工作的翻译和打印功能但是当我将它们组合起来时,代码会运行,但当它到达标记的行时会崩溃。
当我调试代码时,我的翻译功能中的一行会突出显示。
这是组合两个功能的正确方法吗?我应该有一些中间步骤吗?
更多信息
shape_map是<string, polygon*>
当我这样做时,it->second->printshape();
或it->second->translate(matrix(Xtrans, Ytrans);
它不会崩溃并打印原始形状,但我不知道翻译是否有效。