2014-03-22 3 views
0

Это всего лишь схема кода, который я пытаюсь. Помогите мне!присвоение значения массиву

void surfaceintensity(int xpos,int ypos ,int zpos) 
{ 
    x[1]=xpos; 
    x[2]=ypos; 
    x[3]=zpos; 
} 

Предположим, что у меня есть объект t1 и я послал значения интенсивности поверхностной функции, как:

t1.surfaceintensity(10,20,30) 

Если я сделать это выше способом, то, будет значения

x[1]=10; 
x[2]=20; 
x[3]=30; 

Если нет, то каким образом я могу присвоить эти значения массиву x[]?

+0

И проблема в этом? – deviantfan

+0

Какие ошибки вы получаете? Каков ожидаемый результат? Каков фактический результат? В чем вопрос*? – ciphermagi

+0

* «Я думаю, что-то не так» * ... быть конкретным – LihO

ответ

0

Как я понимаю ваш вопрос, у вас есть класс (назовем его MyClass), который имеет функцию-член surfaceintensity(). Эта функция-член присваивает некоторые значения элементам массива x, который также является членом вашего класса.

Вы не уверены, что присвоение значений этому массиву изнутри функции-члена фактически изменит массив экземпляра, на который он вызван. Если это так, то посмотрите на следующий пример (просто копировать/вставить его, он должен составить):

#include <iostream> 

class MyClass 
{ 
public: 
    MyClass() 
    { 
     x[0] = 0; 
     x[1] = 0; 
     x[2] = 0; 
    } 

    void surfaceintensity(int xpos,int ypos ,int zpos) 
    { 
     x[0]=xpos; 
     x[1]=ypos; 
     x[2]=zpos; 
    } 

    void print() 
    { 
     std::cout << x[0] << "/" << x[1] << "/" << x[2] << std::endl; 
    } 

private: 
    int x[3]; 
}; 

int main() 
{ 
    MyClass t1; 
    t1.print(); 
    t1.surfaceintensity(10,20,30); 
    t1.print(); 
    return 0; 
} 

Это напечатает

0/0/0 
10/20/30 

Это свидетельствует о том, что ответ на ваш вопрос : да, присвоение значений переменным-членам меняет внутреннее состояние объекта.

Надеюсь, это было то, о чем мы просим. Если нет, отредактируйте свой вопрос и уточните.

+0

Нет, это не сработает, так как вы (и оригинальный плакат) используете индекс 1..3 вместо 0..2 в surfaceintensity (). Тем не менее я не понимаю, в чем проблема OP :-) – Silicomancer

+0

Argh. спасибо .../fixed –

+0

Нет проблем! Продвигайтесь вперед! ;-) – Silicomancer

1

Если я понимаю вас правильно, я думаю, что наш код делает то, что вы ожидаете. Однако вам следует использовать индекс массива 0..2 вместо 1..3!

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