有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java C++:对混合了向量的指针的引用。我有麻烦了

我是一名编程新手,但已经学习了一些CJava

我现在开始学习。我分配给自己的第一个练习是将一个用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) 个答案