2013-04-08 4 views
0

Я пытаюсь преобразовать этот код:Преобразование структуры в C++ Руби

#pragma once 
#include "thread.h" 
#include <vector> 

struct Process { 
    enum Type { 
    SYSTEM, 
    USER 
    }; 

    // process ID 
    int pid; 

    // process type 
    Type type; 

    // threads belonging to this process 
    std::vector<Thread*> threads; 

    // constructor 
    Process(int pid, Type type) : pid(pid), type(type) {} 
}; 

в Ruby, но я не могу понять это. Я пробовал использовать модуль, но выяснил, что у вас действительно нет конструкторов в модуле. Я тоже не понимаю класс структуры ruby. Если кто-то может объяснить это или помочь мне преобразовать его, это было бы очень признательно.

ответ

3

Я думаю, что это может быть стоит посмотреть:

C++ - struct vs. class

Вашей структурой является то, что большинство языков (в том числе Ruby) назовет класс (не стиля C структуры):

class Process 
    def initialize(pid, type) 
    @type = type 
    @pid = pid 
    @threads = [] 
    end 
    attr_accessor :type, :pid, :threads 
end 

Вам нужен attr_accessor, чтобы сделать его общедоступным (это поведение по умолчанию для структур на C++).

+0

ОК, это то, что я думал, но просто не казалось правильным использовать класс в качестве структуры. Я не понимал, что они не сравниваются одинаково. Я также не понимаю, почему я получил downvoted, может быть, это потому, что мой вопрос был слишком конкретным? – snowe

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