使用C ++我试图将一个类的对象嵌套在另一个类中,并且在CarpetClass.h
的第6行出现语法错误,该错误表示
错误:功能"矩形"不是类型名称
myclass.h
class Rectangle{
private:
double length;
double width;
public:
void setLength(double len){
length = len;
}
void setWidth(double wid){
width = wid;
}
double getLength(){
return length;
}
double getWidth(){
return width;
}
double getArea(){
return length*width;
}
};
CarpetClass.h
#include "myclass.h"
class Carpet{
private:
double pricePerSqYd;
Rectangle size;
public:
void setPricePeryd(double p){
pricePerSqYd = p;
}
void setDimensions (double len, double wid){
size.setLength(len / 3);
size.setWidth(wid / 3);
}
double getTotalPrice(){
return (size.getArea*pricePerSqYd);
}
};
Source.cpp
#include <iostream>
#include "CarpetClass.h"
using namespace std;
int main(){
Carpet purchase;
double pricePerYd;
double length;
double width;
cout << "Room length in feet: ";
cin >> length;
cout << "Room width in feet: ";
cin >> width;
cout << "Carpet price per sq. yard: ";
cin >> pricePerYd;
purchase.setDimensions(length, width);
purchase.setPricePeryd(pricePerYd);
cout << "\nThe total price of my new " << length << "x" << width << " carpet is $" << purchase.getTotalPrice() << endl;
}
我不知道为什么我收到错误,我从我的教科书中复制了示例代码。我已经尝试将两个类放在我的cpp文件中,并将它们放在同一个头文件中。这些解决方案都没有奏效。请帮助我理解为什么我收到此错误。
答案 0 :(得分:3)
class Carpet{
private:
double pricePerSqYd;
class Rectangle size;
class Rectangle
将使编译器理解您的意思是您的类的名称而不是&#34; Windows函数使用设备上下文绘制矩形&#34;
使用命名空间避免名称冲突是一种很好的做法。或者,或者使用类似&#34;使用 C &#34;,class CRectangle{...
添加类名称之类的惯例,然后它不会与类似的功能碰撞#39;名称
答案 1 :(得分:0)
使用这个非常简单的驱动程序代码:
#include "CarpetClass.h"
int main()
{
Carpet c;
}
代码在Linux下使用gcc完全编译,但如果我修复了成员函数,仅:
double getTotalPrice(){
return (size.getArea()*pricePerSqYd);
}
您是否确定自己未包含任何定义Rectangle
的内容?您可能还希望在标头中插入一些#include
防护,并提供默认的构造函数和析构函数。
要问一个更好的问题,下次尝试直接从您的计算机上剪切并粘贴代码(以及错误消息!),以避免浪费时间的错别字。