小编Cod*_*ith的帖子

如何创建和使用类箭头运算符?

因此,在研究了它到处之后,我似乎无法找到如何创建类箭头操作符,即

class Someclass
{
  operator-> ()  /* ? */
  {
  }
};
Run Code Online (Sandbox Code Playgroud)

我只需要知道如何使用它并适当地使用它. - 它的投入是什么? - 它返回什么? - 我如何正确声明/原型化?

c++ class operator-keyword

22
推荐指数
2
解决办法
3万
查看次数

c ++类函数别名

我想知道是否有一种简单的方法来编写c ++类函数的别名.例如,如果我有一些list容器对象,那么逻辑函数就是

    int list::length() { return len; }
Run Code Online (Sandbox Code Playgroud)

但程序员可能使用的另一个逻辑别名可能是

    int list::size() { return len; }
Run Code Online (Sandbox Code Playgroud)

因此,有没有任何方法可以创建list::size()别名list::length(),使其在编译时不重复,而是引用相同的函数?

我已经读过你可以这样做了#define,但是我不想在某个地方完全超出范围的其他代码名称(即'size'变量)引起任何混淆.
我还读过函数指针可以修复它,但这不是一个别名(因为它必须应用去引用),也不能给函数指针一个声明,给用户一个令人困惑的帮助线(我想),加上混乱,如果我需要将我的代码嵌套在另一个对象中(我必须调整范围).

我的一个猜测是,大多数优化编译器将以下内容作为直接函数别名:

    inline int list::length() { return len; }
    inline int list::size() { return length(); }
Run Code Online (Sandbox Code Playgroud)

或者,c ++有任何严格的"别名"语法吗?(我找不到任何 - 不确定)
那么,这样做最有效的方法是什么?

编辑:我接受了答案只是为了结束这个问题,因为这只是我的一个好奇心.任何有良好信息的人,请添加评论或回答,我甚至可能会改变我的答案.

c++ alias class function

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

HTML 输入 - 以编程方式设置输入值时撤消历史记录丢失

我有一个 HTML 输入。当用户在其中输入内容时,我设置了“输入”事件来处理将输入更新为用户输入内容的过滤版本(以及更新选择开始和选择结束以获得流畅的用户体验)。为了达到适当的效果,这种情况会不断发生。

然而,我注意到,每当 JS 通过 设置输入的值时input.value = '...';,输入的撤消历史记录就会消失。也就是说,在聚焦的情况下按 Ctrl-Z 不再返回到之前的状态。

有什么方法可以提供输入自定义撤消历史记录,或者以其他方式防止它丢失历史记录,同时仍然更改其值?


这是我的问题的一个最小示例:
输入顶部输入(基本在每个字符之间添加句点)后,Ctrl-Z 不会撤消。

<body>
    <input type="text" id="textbox" placeholder="No undo"/><br/>
    <input type="text" id="textbox2" placeholder="Undo"/>
    <script>
        var tbx = document.getElementById("textbox");
        tbx.addEventListener('input', () => {
            tbx.value = tbx.value + '.'
        });
    </script>
</body>
Run Code Online (Sandbox Code Playgroud)

javascript undo html-input

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

c ++如何将类声明为文件的本地

所以,我知道静态函数是文件本地的函数.因此,无法从其他文件访问它们.这也适用于课程吗?我已经阅读了很多关于如何static class不声明类包含纯静态成员和方法(很明显)的争议,但无法找到任何提及是否会声明该类在本地可访问的类文件范围,更合乎逻辑.

如果它没有,那么使用匿名命名空间怎么样,我听说过也可以用来声明文件本地函数?

c++ static scope class translation-unit

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

使用基类指针删除派生类时出现内存泄漏

我有一个内存泄漏的问题.我有一个基类指针.从中,我new用来分配不同的派生类.然后,当我尝试delete使用引用(不是类型转换)的那些类时,我得到内存泄漏.我研究了这个问题,发现我应该在基类中添加一个虚拟析构函数,但是我尝试了这个并且仍然有内存泄漏; 也就是说,根据我的任务管理器,每次使用基类指针分配和删除派生类时,内存使用量会继续增加.我试图使它成为一个抽象的析构函数,并在派生类中添加了析构函数,但是我得到了一个未定义的引用错误.我也尝试将指针类型转换为派生类指针delete,但显然这会使程序崩溃.

有谁知道我应该怎么做?

示例代码:

class A {
public:
  A();
  ~A() {};
  virtual ~A();      /*or*/
  virtual ~A()=0;    /*or*/
                     /*or nothing?*/
}

class B: private A {
public:
  B();
  ~B() {};           /*this?*/
                     /*or nothing?*/
}
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism memory-leaks

4
推荐指数
2
解决办法
4888
查看次数

JS:嵌套函数获取外部函数参数的副本?

因此,通过以下代码,我向自己证明了嵌套函数确实获得了外部函数的参数的副本:

    var o = {};
    (function(a,b,c,x){
        x.f = function(){
            return a.toString()+b.toString()+c.toString();
        }
    })(7,4,2,o);
    o.f();
Run Code Online (Sandbox Code Playgroud)

代码产生

    742
Run Code Online (Sandbox Code Playgroud)

这意味着该o.f函数从匿名函数中获取a,b和c的副本.否则,我会得到undefinedundefinedundefined

我的问题是,

  • 首先,这总是如此吗?还是有严格的情况?(比如,它必须是一个对象吗?等)
  • 另外,在javascript中还有哪些其他类型的模糊范围?我很想知道(即第三次迭代怎么样?)
  • 最后,我完全可以阅读一篇阐述javascript范围高级概念的文档.有谁知道任何好的?

javascript scope nested-function

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

ExtendScript的UnitValue

因此,对于我的生活,我无法找到ExtendScript的UnitValue对象的组件的明确细分.我发现的每个来源都与Adobe有关,并没有解释它.我真的希望对它有一个完整的参考,但如果没有人能找到它,我至少需要回答几个问题.

首先,它的构造函数是什么?
        我已经看到UnitValue(10,'px')哪些是有意义的,但我也看过UnitValue(20,20)
第二,你怎么能从一个单位转换到另一个单位?
第三,你如何找到它的价值和单位?
        我想我已经看到uv.value但没有得到单位

最后,正如我的标签所示,这是Adobe,当然,因为我从未见过或听说过使用ExtendScript的任何其他程序.

adobe extendscript

3
推荐指数
2
解决办法
4294
查看次数

在Windows上添加/删除文件末尾的字节

所以,我环顾四周,但找不到从文件末尾删除字节而不重写整个文件的方法.我发现一个truncate函数适用于linux,但没有为windows找到任何东西.现在,显然,要扩展文件,我可以用空字节填充结尾,但是为了减少文件的大小,是否真的需要在Windows上重写整个文件?或者是否有一个函数,可能在windows.h,允许我,像truncate在Linux上,重新分配文件的大小?

编辑:  我刚刚找到该功能_chdir(int,long),我正在阅读如何使用它.

编辑:  而且,为什么确实fstream遗漏了这个重要的功能?

编辑:  好的,所以它似乎_chdir()不起作用(我忘了提这个,顺便说一句),因为该函数必须支持大于4 GB的文件 - 即,我使用的是64位文件指针.我认为这将是固有的,但在阅读了论据后chsize,长度不是size_t.

c++ windows truncate filesize

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

双递归结构

我对如何创建两个相互引用的结构感到困惑。我找不到任何像以前问过的问题。
所以,我知道这会编译得很好:

    struct MyStruct {
        MyStruct* p;
    };
Run Code Online (Sandbox Code Playgroud)

但是,例如,

    struct A {
        B* pBstruct;
    };
    struct B {
        A* pAstruct;
    };
Run Code Online (Sandbox Code Playgroud)

这不会编译。

c++ recursion struct

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

struct中的const char指针声明

我正在尝试这样做,但我的编译器不会让我:

    struct {
        const char* string = "some text";
    } myAnonymousStruct;
Run Code Online (Sandbox Code Playgroud)

我相信这是因为在结构声明中不能进行任何分配 - 它们应该是在函数或其他方面进行的.但我真的甚至不允许分配const char*变量吗?
如果有人能让我知道我错过了什么,我真的很感激.谢谢

c++ struct const-char

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