小编OhM*_*ere的帖子

如何在Windows上使用JSDoc?

如果这是一个愚蠢的问题,请原谅我,但我完全不知道如何在Windows上使用JSDoc.我知道JSDoc-Toolkit,但它有点过时了,谷歌代码库建议使用JSDoc 3代替.我从Github下载了JSDoc并将jsdoc-master文件夹解压缩到我的本地磁盘上但是找不到任何关于如何使用它来解析我的文件的可靠信息.

javascript windows jsdoc

13
推荐指数
1
解决办法
1万
查看次数

将boost :: shared_ptr与重载下标运算符([])的类一起使用

我有一个重载下标运算符的类:

class SomeClass
{
public:

   int& operator[] (const int idx)
   {
      return someArray[idx];
   }  

private:

   int someArray[10];
};
Run Code Online (Sandbox Code Playgroud)

这当然允许我像这样访问someArray成员的数组元素:

SomeClass c;
int x = c[0];
Run Code Online (Sandbox Code Playgroud)

但是,SomeClass的某些实例将包含在boost共享指针中:

boost::shared_ptr<SomeClass> p(new SomeClass);
Run Code Online (Sandbox Code Playgroud)

但是,为了使用下标运算符,我必须使用更详细的语法,这种语法会破坏下标运算符重载的简洁性:

int x = p->operator[](0);
Run Code Online (Sandbox Code Playgroud)

有没有办法以更简单的方式访问下标运算符?

c++ boost shared-ptr subscript operator-keyword

6
推荐指数
1
解决办法
722
查看次数

导出链接到动态库的静态库中的符号

我在MSVC2017中有以下场景:

  1. 具有该功能的静态库bool foo()
  2. 链接上面静态库的动态链接库
  3. 使用显式运行时链接加载动态链接库并foo()通过以下方式调用的应用程序GetProcAddress

在静态库中,foo()定义如下:

extern "C" __declspec(dllexport) bool foo() 
{
    return true;   
}
Run Code Online (Sandbox Code Playgroud)

现在,由于foo()不被动态链接库使用,因此它的符号不会被导出,因此在应用程序使用时无法找到GetProcAddress

我努力了:

#pragma comment(linker, "/include:foo")

和:

#pragma comment(linker, "/export:foo")

如果我将定义移动到动态链接库(不是可行的解决方案) ,我可以使用 Dependency Walker 看到导出的内容foo(),但是当我使用上述链接器开关将定义保留在静态库中时,我似乎无法导出符号。我认为这是因为该符号仍未使用,因此仍然没有导出?

我想要一个适用于 Windows 上的 MSVC 和 Linux 上的 Clang 的解决方案。谢谢!

c++ linker dynamic-linking static-libraries dllexport

6
推荐指数
1
解决办法
8519
查看次数

带有静态类成员的 C++ 模板类

我是模板编程的新手。我有一个向量类,我试图模板它包含与父类相同的类的静态成员:

template<typename T>
class Vector
{
   // vector stuff

   static const Vector c_NullVector;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试初始化这个静态成员,但只有在我明确声明类型的情况下才能成功,例如:

const Vector2d<float> Vector2d<float>::c_Zero(0.0);
Run Code Online (Sandbox Code Playgroud)

如果可能,我宁愿不必初始化每种类型。这甚至可能吗?

c++ templates compiler-errors class

1
推荐指数
1
解决办法
483
查看次数