Я пытаюсь преобразовать программу Java в C++. Это код Java (который работает отлично):Преобразование из Java в C++. Почему я не могу использовать методы другого класса одинаково в C++?
//class MyProgram:
public class MyProgram {
private static ArrayList mylist;
//no constructor
public static int numberOfItems(){
return mylist.size();
}
}
//second Java program, MyList
public class MyList {
public MyList(){
for (int i = 0; i < MyProgram.numberOfItems; i++)
System.out.println("Test");
}
}
Это работает так, как я надеюсь. Однако при преобразовании в C++ заголовок цикла for дает мне ошибки, потому что он не распознает numberOfItems. Реализация точно такая же, за исключением вектора вместо arraylist. Мой вопрос: почему НЕ работает на C++? Почему это работает на Java? Я никогда не писал объект раньше, чем мне не приходилось вызывать конструктор, чтобы использовать методы этого класса. Как я могу достичь этой же цели в C++? Я могу опубликовать код C++, но он выглядит очень похожим и кажется бессмысленным.
EDIT: C++ Код:
//MyProgram.h
#ifndef MYPROGRAM_H_
#define MYPROGRAM_H_
#include <vector>
namespace std;
class MyProgram {
public:
int numberOfItems();
private:
vector<Checkpoint> mylist;
};
#endif /* MYPROGRAM_H_ */
//MyProgram.cpp
#include "MyProgram.h"
int MyProgram::numberOfItems()
{
return mylist.size();
}
//MyList.h:
#ifndef MYLIST_H_
#define MYLIST_H_
#include <vector>
using namespace std;
class MyList {
public:
MyList();
virtual ~MyList();
private:
vector<Checkpoint> path;
};
#endif /* MYLIST_H_ */
//mylist.cpp
#include "MyList.h"
MyList::MyList()
{
int i;
for(i = 0; i < MyProgram.numberOfItems(); i++)
{
path.push_back(0);
}
}
Не могли бы вы добавить, что вы сделали на C++? Мы не можем видеть, что не так. –
сам класс должен быть статичным? –
@JeromeL Sure предмет. – user2130057