java C++:对混合了向量的指针的引用。我有麻烦了
我是一名编程新手,但已经学习了一些C
和Java
我现在开始学习。我分配给自己的第一个练习是将一个用Java
编写的小程序翻译成C++
。现在,据我所知,Java
似乎对幕后的一切(称为Java
“引用变量”)或对象地址(称为Java
“引用”)使用指向对象的指针,因此不能直接操作C++
中的对象,而是使用“参考”来表示它
正因为如此,我想写这个程序尽可能接近这个Java逻辑,使用任何对象的指针,而不是对象本身。然而,我在尝试使用基于范围的循环时遇到了一个问题(对于每个循环)和向量。我发现的唯一解决方法是使用传统循环(常规for),或者干脆放弃这个Java逻辑,直接使用对象。但是,我想使用指针,而不是对象本身
真的不可能吗?如果没有,我必须在代码中更改什么
#include <iostream>
#include <vector>
using namespace std;
class File;
class FileGenerator {
public:
void generateFile(vector<File *> * &files);
};
class File {
public:
virtual void generate() = 0;
};
class FilePDF : public File{
public:
void generate();
};
class FileXML : public File {
public:
void generate();
};
void FileXML::generate(){
cout << "Generating XML file... " << endl;
}
void FilePDF::generate(){
cout << "Generating PDF file... " << endl;
}
void FileGenerator::generateFile(vector<File *> * &files){
///THIS WORKS FINE!
// for(int i = 0; i < files->size(); i++){
// files->at(i)->generate();
// }
///THIS DOES NOT WORK!
for(File *file : *files){
file->generate();
}
}
int main(){
vector<File *> *files = new vector<File *>;
files->push_back(new FilePDF);
files->push_back(new FileXML);
FileGenerator *fileGenerator = new FileGenerator();
fileGenerator->generateFile(files);
return 0;
}
共 (0) 个答案