我有不同的对象,例如Triangle,Plane,Sphere等,它们都从OBJECTS类继承。我想创建这些不同对象的向量,然后遍历每个元素并对它们执行操作。我正在尝试制作光线跟踪器,我想创建将许多不同的对象放置到场景中,但是我不知道如何。 OBJECTS是一个抽象类,因此我无法创建矢量,因为我可以创建它的实例。我应该创建一个全新的类并让所有形状类都继承吗?还是应该重新制作对象类,使其不再抽象?帮助表示赞赏。我的下一个最佳猜测是对象指针。
答案 0 :(得分:1)
如评论所建议,您可以执行以下操作。
public class NotifyListener extends NotificationListenerService{
public static boolean listnerConnected = false;
@Override
public IBinder onBind(Intent intent) {
Log.d(name,"onBind Called");
listnerConnected = true;
return super.onBind(intent);
}
@Override
public void onDestroy()
{
super.onDestroy();
Log.e("destroy", "called");
listnerConnected = false;
}
}
只需创建对象指针的向量即可。请注意,您不必使用class Object{
public:
virtual ~Object()= default;
virtual void foo() = 0;
};
class Pane: public Object{
public:
~Pane() = default;
void foo() override{
std::cout << "Hello Pane" << std::endl;
}
};
class Triangle: public Object{
public:
~Triangle() = default;
void foo() override{
std::cout << "Hello Triangle" << std::endl;
}
};
int main(){
std::vector<std::unique_ptr<Object>> objects;
objects.emplace_back(std::make_unique<Triangle>());
objects.emplace_back(std::make_unique<Pane>());
for(auto &object: objects){
object->foo();
}
return 0;
}
,但我强烈建议您这样做,因为您无需在最后删除对象。
这个简单程序的输出是:
unique_pointers