C ++ класс / объект функции использования запроса - PullRequest
0 голосов
/ 30 марта 2012

У меня есть класс с определенными функциями, которые необходимо передать в качестве параметров.Я хочу настроить новый экземпляр этого класса (с параметрами) как объект (?).

Застревание с синтаксисом.

class classname{
void classfunction1(int, int);
void classfunction2(int, int);
};

void classname::classfunction1 (int a, int b)
{ // function }

void classname::classfunction2 (int a, int b)
{ // function uses classfunction1 }

Я хочу определить параметры для classfunction1, который будет использоваться в функции класса 2 и назначит объект (?) такого типа, чтобы intellisense его подобрал.

Псевдо:

int main(){
classname(20, 20) object;
object.classfunction2(50, 50);
}

Спасибо!

1 Ответ

2 голосов
/ 30 марта 2012

Ваш main немного вялый в данный момент.

int main(){
    classname(20, 20) object; // You are incorrectly calling a constructor which does not exist
    object.classfunction2(50, 50); // more like correct behavior.
}

В определенном вами классе нет никаких переменных-членов, поэтому он не store никаких данных.Он содержит только две функции.Таким образом, это означает, что вы можете использовать «конструктор по умолчанию», который компилятор определяет для каждого класса (вы можете предоставить свой собственный, если хотите).

int main(){
    classname object; // Call the default constructor
    object.classfunction1(10, 20); // Call the functions you want.
    object.classfunction2(50, 50); 
}

Если вы хотите предоставить конструктор, вы должны сделать что-токак:

class classname{
  public:
    classname(int variable1, int variable2): 
            member1(variable1), member2(variable2){}; //note that there is no return type
    void classfunction1(); //because instead of taking parameters it uses member1 & 2
    void classfunction2(int, int);

  private: 
    int member1;
    int member2;
};

Тогда вы будете выглядеть следующим образом:

int main(){
    classname object(10, 20); // Call the default constructor. Note that the (10, 20) is AFTER "object".
    object.classfunction1();  // Call the function... it will use 10 and 20.
    object.classfunction2(50, 50); //This function will use 50, 50 and then call classfunction1 which will use 10 and 20.
}

Несколько замечаний: способ, которым вы пытались вызвать первый конструктор, был неправильным, вам нужны параметрыпосле имени переменной.См. Комментарии ниже, чтобы узнать о другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...