2015-02-27 3 views
-3

Я пытаюсь преобразовать программу 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); 
    } 
} 
+2

Не могли бы вы добавить, что вы сделали на C++? Мы не можем видеть, что не так. –

+0

сам класс должен быть статичным? –

+0

@JeromeL Sure предмет. – user2130057

ответ

4

MyProgram.numberOfItems изменения в MyProgram::numberOfItems()

+2

И вы должны положить() – amchacon

+0

Спасибо! Это именно то, что я ищу. Вопрос, хотя это не сработало с(), только когда я удалил, что это сработало. В этом случае, что бы я сделал, если метод, который я хотел назвать, имел параметры? В этом случае это было пусто, поэтому все было хорошо. – user2130057

1

Итак, у вас есть непонимание является членом класса против члена объекта. Это сообщение предоставит вам информацию, которая вам действительно нужна: When do I use a dot, arrow, or double colon to refer to members of a class in C++?.

Кроме того, как и frinji1, MyProgram::numberOfItems() - это то, что вы хотите.

+0

Большое спасибо! Вы правы, я думаю, что мое основное понимание не работает. Я ценю ответ. – user2130057

Смежные вопросы