C++ 从类定义传递字符串指针

C++ 从类定义传递字符串指针,c++,string,C++,String,我遇到的问题是字符串参数。我不太清楚如何使用它。我只希望分类从开始到用户输入都有未定义的长度字符串。我得到的错误是,当我键入字符串分类时,声明“std::string classification”会隐藏一个参数。将字符串参数传递给类成员的正确方法是什么 #包括 #包括 #包括 使用名称空间std; 类形状 {//开始类定义 私人: 浮子侧; 浮动高度; 整数指数; 字符串*分类; 公众: 形状(浮动边、浮动高度、字符串*分类); //建造师 ~Shapes(){}; //析构函数 浮动区域(

我遇到的问题是字符串参数。我不太清楚如何使用它。我只希望分类从开始到用户输入都有未定义的长度字符串。我得到的错误是,当我键入字符串分类时,声明“std::string classification”会隐藏一个参数。将字符串参数传递给类成员的正确方法是什么


#包括
#包括
#包括
使用名称空间std;
类形状
{//开始类定义
私人:
浮子侧;
浮动高度;
整数指数;
字符串*分类;
公众:
形状(浮动边、浮动高度、字符串*分类);
//建造师
~Shapes(){};
//析构函数
浮动区域(浮动侧、浮动高度、串*分类);
浮子周长(浮子侧、浮子高度、串*分类);
}; // 端类定义
整数幂(浮点侧,整数指数)
{
int i;
整数总[指数];
浮点数;
对于(i=0;i<指数;i++)
{
总[i]=边;
总和*=总计[i];
}
回报金额;
}
浮动形状::面积(浮动边、浮动高度、字符串*分类)
{
浮动面积=0.0;
字符串分类;
getline(cin,string);
如果(分类=“方形”)
{
面积=功率(侧,2);
返回区;
} 
如果(分类=“三角形”)
{
面积=(侧面*高度)/2;
返回区;
} 
如果(分类=“六边形”)
{
浮动常数=2.598706;
面积=恒定*功率(侧,2);
返回区;
} 
如果(分类=“圆圈”)
{
} 
};
将字符串参数传递给类成员的正确方法是什么

不要。您已经可以访问类的方法中的成员,不需要额外的变量,也不需要将其作为参数传递

float Shapes::area(float side, float height, string *classification)
{
    string classification;
在这种情况下,您有一个名为
分类的参数一个同名的成员一个同名的局部变量

想想看,你甚至不需要指针

你需要的是读一本C++书。我不是在讽刺,也不是在刻薄。C++很难正确,而且在理解变量或范围的更基本概念之前,似乎已经开始使用指针。 将字符串参数传递给类成员的正确方法是什么

不要。您已经可以访问类的方法中的成员,不需要额外的变量,也不需要将其作为参数传递

float Shapes::area(float side, float height, string *classification)
{
    string classification;
在这种情况下,您有一个名为
分类的参数一个同名的成员一个同名的局部变量

想想看,你甚至不需要指针


你需要的是读一本C++书。我不是在讽刺,也不是在刻薄。C++很难正确,而且在理解变量或范围的更基本概念之前,你似乎已经开始使用指针了。

在代码中>代码>形状::区域< /C> >,你不需要重新定义变量<代码>分类< /代码>类型<代码> STD::String < /C>因为其中一个参数
string*分类

您可以使用参数
*classification==“circle”
,前导的
*
是因为您将参数声明为指针类型。另一种方法是在C++中声明<代码>分类>代码>为“代码>字符串和分类< /代码>,这是一个参考。通过一个参考参数,您可以直接使用,比如
classificaiton==“circle”


希望有帮助。

在代码
Shapes::area
中,您不需要重新定义变量
classification
键入的
std::string
,因为其中有一个参数
string*classification

您可以使用参数
*classification==“circle”
,前导的
*
是因为您将参数声明为指针类型。另一种方法是在C++中声明<代码>分类>代码>为“代码>字符串和分类< /代码>,这是一个参考。通过一个参考参数,您可以直接使用,比如
classificaiton==“circle”


希望有帮助。

您的参数名称与类成员相同。它们不是同一个变量

如果要使类成员成为参数的卷影副本,应执行以下操作:

float Shapes::area(float side, float height, string classification)
{
     float area=0.0;
     this->classification = classification;
     getline(cin,classification);

     //rest goes here
}
这里,
这是指向holder类的指针

您需要更改类声明:

class Shapes
{
    string classification;
}
除非确实需要,否则不要使用指向类的指针。如果要更改值,请使用引用


注意:不要在函数定义的末尾加分号。

您的参数名称与类成员相同。它们不是同一个变量

如果要使类成员成为参数的卷影副本,应执行以下操作:

float Shapes::area(float side, float height, string classification)
{
     float area=0.0;
     this->classification = classification;
     getline(cin,classification);

     //rest goes here
}
这里,
这是指向holder类的指针

您需要更改类声明:

class Shapes
{
    string classification;
}
除非确实需要,否则不要使用指向类的指针。如果要更改值,请使用引用


注意:不要在函数定义的末尾加分号。

您正在重新定义
字符串
命名为分类。您只需在类声明中声明该变量一次,就可以在所有成员函数中使用它。你的论点也使用了相同的名字,这是令人困惑和危险的

在这里,您还应该小心使用指针,似乎您不确定何时使用它们,或何时使用引用。如果您确实尝试比较您的
string*分类