gpt4 book ai didi

c++ - 类定义中方法声明前的双冒号 (::)

转载 作者:搜寻专家 更新时间:2023-10-31 00:12:14 24 4
gpt4 key购买 nike

我有一个由第 3 方编写的类,其中包含类似 Foo.h 的内容:

class Foo
{
public:
int Foo::dosomething(float x, float y, float z);

//Other things here
};

在 Foo.cpp 中,做的事情是:

int Foo::dosomething(float x, float y, float z)
{
//Something
}

header 中函数名称前的:: 是什么意思?当我创建一个新对象时

Foo foo;

我无法像这样访问 dosomething 函数:

foo.dosomething(1,2,3);

dosomething 是如何访问的?当我在执行以下操作之前删除头文件中的::时:

class Foo
{
public:
int dosomething(float x, float y, float z);

//Other things here
};

我可以从 Foo 类型的对象访问 dosomething。

最佳答案

将作用域添加到类定义中 的函数名是不正确的(许多编译器认为这是错误)。因为它已经在类的范围内,所以您实际上是将函数范围定义为 Foo::Foo::dosomething,这是错误的。

class Foo
{
public:
int Foo::dosomething(float x, float y, float z); // Shouldn't have Foo::
};

为了回答您关于 :: 做什么的问题,它指定了函数的范围。考虑这两个函数

int dosomething(float x, float y, float z);
int Foo::dosomething(float x, float y, float z);

第一个是自由函数,后者是 Foo 类的一个方法并且(因为它前面没有单词 static)需要一个实例Foo 被调用。

关于c++ - 类定义中方法声明前的双冒号 (::),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31033746/

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