【发布时间】:2017-07-17 18:43:38
【问题描述】:
背景:
我目前正在学习edX | Intermediate C++ 课程。尽管该课程由 Microsoft 领导,但并未说明您需要使用他们的 IDE Visual Studios 才能成功完成。我只有一台 Mac,所以我完全不用担心使用 Xcode 完成了介绍课程。
问题:
在中级课程的第一个模块中,它声明您可以将标题中的类声明为静态类,如下所示:
// Math.h
// Header file for the Math class
#pragma once
// Math class definition
static class Math
{
public:
// given base and exponent, calculate value
static int Math::pow(int base, int exp);
};
Xcode 将错误标记为:
类型声明中不允许使用“静态”
根据之前提出的here 的 SO 问题,这是不可能的,但我不确定自 2008 年回答该问题以来这是否发生了变化,或者这可能是编译器特定的/VS 功能,由微软迷惑人。
【问题讨论】:
-
如果你只想要一个类中的公共静态成员函数,那么你可以只使用
namespace。至于您的问题,向 C++ 中的类或结构添加链接说明符(如static)从来都不是有效的。 -
或者像Java一样只使用私有构造函数和静态方法,你不必将类定义为静态的。
-
谢谢两位。我刚刚做了一点谷歌,可以看到你在说什么。主要问题是我猜C++不可能做到这一点?如果是这样,微软为什么要教这个?
-
这可能是 C++/CLI 功能? C++/CLI 是 C++ 的扩展变体,具有 .NET 和许多不可移植和非标准特性。
-
请注意
Math::pow声明中的Math::限定符也是无关的,这也会导致编译错误。
标签: c++ xcode visual-studio