我想实现一个简单的静态类,该类可以在练习时计算c++中整数的pow值。所以我的代码在这里:
#pragma once
#ifndef MATH_H
#define MATH_H
static class Math
{
public:
static int pow(int,int);
};
#endif /* MATH_H */
和pow功能的实现:
#include "Math.h"
int Math::pow(int base, int exp){
if(exp==1)
return base;
else if(exp%2==0)
return pow(base,exp/2)*pow(base,exp/2);
else
return pow(base,exp/2)*pow(base,exp/2)*base;
}
但是cygwin编译器抛出编译错误:
In file included from Math.cpp:16:0:
Math.h:16:1: error: a storage class can only be specified for objects and functions
static class Math
^~~~~~
请帮助我解决我的问题。
最佳答案
C++没有“静态类”,因为它们在其他语言中正式存在。但是,您可以删除默认构造函数(C++> = 11)或将其构造为私有(private)且未实现(C++
// C++ >= 11
class Math
{
public:
Math() = delete;
};
// C++ < 11
class Math
{
private:
Math(); // leave unimplemented
};
使用此代码,
Math m;
行将失败:但是,“静态类”通常是C++中的反模式,应首选自由函数。 (在某些情况下,静态类可能有用,尤其是在进行模板元编程时。如果不这样做,则几乎可以肯定不需要静态类。)
考虑改为在命名空间中声明函数:
namespace math {
int pow(int, int);
}
关于c++ - 如何在C++中实现静态类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58400410/