Попытка получить это домашнее задание, и я просто продолжаю ударять по одной стене за другой. То, что я получаю сейчас сообщение об ошибке:C2597 незаконная ссылка на нестационарный член
Ошибка 1 Ошибка C2597: нелегальная ссылка на нестатический член «circleType :: радиус»
У меня есть 2 файлов заголовки, circleType.h и cylinderType.h и Мне нужно предоставить результаты для доставки и покраски, которые пользователь вводит. Немного помогите, прежде чем я полностью уйду из головы ... Спасибо.
circle.h
class circleType
{
public:
static void setRadius(double r);
double getRadius();
double area();
double circumference();
circleType(double r = 0);
private:
double radius;
};
void circleType::setRadius(double r)
{
if (r >= 0)
{
radius = r;
}
else
{
radius = 0;
}
}
double circleType::getRadius()
{
return radius;
}
double circleType::area()
{
return 3.1416 * radius * radius;
}
double circleType::circumference()
{
return 2 * 3.1416 * radius;
}
circleType::circleType(double r)
{
setRadius(r);
}
cylinderTyper.h
#include "circleType.h"
class cylinderType: public circleType
{
public:
static void setRadius(double r);
static double getRadius();
static double area();
static double circumference();
cylinderType(double r = 0);
private:
double radius;
};
main.cpp
#include "stdafx.h"
#include "cylinderType.h"
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
void enterData(int& cylinderBase,int& cylinerHeight, double& shipCost, double& paintCost);
int main()
{
cout << fixed << showpoint << setprecision(2);
int cylinderBase, cylinderHeight;
double sCost, pCost, shipCost, paintCost, volume, area = 0, circumference = 0;
enterData(cylinderBase, cylinderHeight, shipCost, paintCost);
cylinderType::setRadius(cylinderBase + cylinderHeight);
cylinderType::getRadius();
cylinderType::area();
cylinderType::circumference();
cout << "Cost of shipping: $" << circumference * shipCost << endl;
cout << "Cost of painting: $" << area * paintCost << endl;
system("pause");
return 0;
}
void enterData(int& cylinderBase, int& cylinderHeight, double& shipCost, double& paintCost)
{
cout << "Enter the base size of cylinder: ";
cin >> cylinderBase;
cout << endl;
cout << "Enter the hight size of cylinder: ";
cin >> cylinderHeight;
cout << endl;
cout << "Enter shipping cost per liter: ";
cin >> shipCost;
cout << endl;
cout << "Enter cost of painting per square foot: ";
cin >> paintCost;
cout << endl;
}
У вас есть радиус в базовом классе, а также в производном классе: Я подозреваю, что это проблема – rts1
Метод setRadius не должен быть статическим. –
Не должно быть никакой функции 'cylinderType :: setRadius', так как правильная версия уже унаследована от базового класса. Цилиндр просто должен выполнять обработку высоты и вычислять общую площадь всех поверхностей (две грани, равные площади поверхности, и одна криволинейная поверхность, которая как-то может быть связана с окружной окружностью). –