gpt4 book ai didi

c++ - 在 C++ 类的函数内部声明变量

转载 作者:可可西里 更新时间:2023-11-01 17:38:10 27 4
gpt4 key购买 nike

MyFill 是一个类,MyFill2 是该类中的一个函数。

像这样在类的公共(public)函数中声明一个变量有什么区别(粗细和线型)-->

MyFill::MyFill (Mat img, Point center)
{
MyFill2 (img, center);
}

void MyFill::MyFill2(Mat img, Point center)
{
int thickness = -1;
int lineType = 8;
circle (
img,
center,
w/32,
Scalar( 0, 0, 255 ),
thickness,
lineType
);
}

...并在私有(private)标签 (private:) 中声明它们,就像在头文件中一样 -->

class MyFill {
public:
MyFill(Mat img1, Point center1);
void MyFill2 (Mat img, Point center);
private:
int thickness = -1;
int lineType = 8;
};

第一个工作正常。但是第二个没有。如果我想选择第二个选项,我需要做什么?带有一些解释的正确代码可能会有所帮助。

最佳答案

您不能在类范围内为变量赋值,您只能在函数内部或全局范围内执行此操作。

class MyFill {
public:
MyFill(Mat img1, Point center1);
void MyFill2 (Mat img, Point center);
private:
int thickness;
int lineType;
};

您的标题需要更改为上面的内容。然后,您可以在任何您喜欢的函数中设置您的值,最好是像这样的构造函数:

MyFill::MyFill(Mat img1, Point center1)
{
thickness = -1;
lineType = 8;
}

编辑 - 在评论中针对您的问题:

函数参数中变量名的标识符不需要在声明和定义之间匹配,只需要类型和它们的顺序匹配。它使它更清楚,但不是必需的。

一个函数原型(prototype)实际上只被视为如下:

void MyFill2(Mat, Point);

当你给它一个定义时,就是标识符的分配真正重要的时候:

void MyFill2(Mat m, Point p)
{
//....
}

关于c++ - 在 C++ 类的函数内部声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17832088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com