Базовый вопрос по C от начинающего программиста

#c

#c

Вопрос:

Я начинающий программист на C и пытаюсь работать в школьной лаборатории. Ниже я вставил оболочку программы, над которой я работаю. В основном, я создаю экземпляр объекта, car1 который принадлежит class Velocity . Когда я пытаюсь использовать этот экземпляр с функцией mpsConverter , я получаю сообщение об ошибке, указывающее, что выражение должно иметь тип class. Мы делали похожие примеры в классе, и этот формат работал нормально. Есть идеи? Если это неподходящий форум для подобных простых вопросов, пожалуйста, укажите мне правильное направление на более подходящий.

Спасибо, Эл

 // P1_2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include "conio.h"
using namespace std;

class Velocity
{
    private:
        int mpsInput;       // input value: meters per second (mps)
        int kmphInput;      // input value: km per hour
        int mphOutput;      // output value: comverted value of km per hour to miles per hour (mph) 
    public:
        int kmphOutput;     // output value: converted value of mps to km per hour
        Velocity();             
        void mpsConverter(int speedKmph);
        void mphConverter();
        ~Velocity();
};

Velocity::Velocity()        // Constructor
{
    cout << "The initial is text is displayed when an object in the class Velocity is Instantiated." << endl;
}

void Velocity::mpsConverter(int speedKmph)      // convert KM per hour into meters per second (mps)
{
    kmphOutput = (speedKmph * 2); 
}

void Velocity::mphConverter()       // convert KM per hour into miles per hour (mph)
{

}

Velocity::~Velocity()       // Destructor
{

}

int main()
{
    Velocity car1();
    car1.mpsConverter(2);
    getch();
    return 0;
}
  

Ответ №1:

 Velocity car1();
  

Приведенное выше утверждение не является созданием экземпляра car1 типа Velocity . Вы пытаетесь вызвать, объявить функцию, car1() возвращаемый тип которой Velocity равен. Поскольку экземпляр не создан —

 car1.mpsConverter(2); // This statement is giving you error stating mpsConverter(2)
                      // can only be called on class types.

Velocity car1 ; // This is the right way of instance creation.
  

Комментарии:

1. Спасибо, я внесу изменения и продолжу.

2. На самом деле, никакая функция не вызывается. Оператор Velocity car1(); объявляет функцию car1 типа Velocity ().