问题列表 - 第14763页

模板静态变量

我无法理解,为什么如果我们在头文件中定义普通(非模板)类的静态变量,我们有链接器错误,但是在模板的情况下一切正常,而且我们将在所有翻译单元中有单个静态变量实例:

它是模板头(template.h):

// template.h
template<typename T>
class Templ {
public:
  static int templStatic;
};

template<typename T> Templ<T>::templStatic = 0;
Run Code Online (Sandbox Code Playgroud)

它是第一个使用模板的单元(unit1.cpp)

// unit1.cpp
#include "template.h"

int method1() {
  return Templ<void>::templStatic++;
}
Run Code Online (Sandbox Code Playgroud)

这里的第二个单位(unit2.cpp):

// unit2.cpp
#include "template.h"
int method2() {
  return Templ<void>::templStatic++;
}
Run Code Online (Sandbox Code Playgroud)

最后,main.cpp:

// main.cpp
#include <iostream>
int method1();
int method2();

int main(int argc, char** argv) {
  std::cout << method1() << std::endl;
  std::cout << method2() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

在编译,链接和执行此代码后,我们将得到以下输出:

0
1
Run Code Online (Sandbox Code Playgroud)

那么,为什么在模板的情况下一切正常(和预期一样)?编译器或链接器如何处理它(我们可以在分离的编译器调用中编译每个.cpp文件,然后将它们与caling链接到链接器,因此编译器和链接器不会同时"看到"所有.cpp文件)?

PS:我的编译器:msvcpp 9(但也检查了mingw)

c++ static templates

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

我们应该在哪里使用模板方法 - 模式?

任何人都可以让我知道应该使用模板方法 - 模式的一些示例情况吗?

根据您自己的经验,给我一些真实的用途.

(到目前为止,我发现它仅用于映射DA层中的数据.抱歉!!!)

design-patterns template-method-pattern

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

用于系统调用的debian手册页

我安装了debian lenny,但我很惊讶我无法获取系统调用的手册页(man 2 read等等)

我该如何安装它们?

linux debian manpage

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

如何在C++/VC++中将日志写入64KB大小的文件?

如何将日志写入大小为64KB的文件(允许记事本读取).一旦文件达到64KB,它应该开头创建另一个,另一个......文件名可以自动生成.

我尝试了以下代码

static int iCounter=1;
CString temp;
      static CStdioFile f(L"c:\\Log1.txt", CFile::modeWrite | CFile::modeRead |  CFile::modeCreate | CFile::modeNoTruncate);

 int nlength = (int)f.GetLength();
 if(nlength>(nMaxFileSize*1024))
 {
     //need to create a new file
     f.Close();
     iCounter++;
     temp.Format(_T("%s%d%s"), "c:\\Log",iCounter, ".txt");
     f.Open(temp,CFile::modeWrite | CFile::modeRead | CFile::modeCreate | CFile::modeNoTruncate);

 }
 f.SeekToEnd();
 f.WriteString(str);
 f.WriteString(L"\r\n");
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个更好的选择.

c++ file-io logging visual-c++

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

java.lang.IllegalMonitorStateException:(m = null)无法获取监视器

为什么会这样?问题是监视器对象肯定不是null,但我们仍然经常得到这个异常:

java.lang.IllegalMonitorStateException: (m=null) Failed to get monitor for (tIdx=60)
        at java.lang.Object.wait(Object.java:474)
        at ...
Run Code Online (Sandbox Code Playgroud)

引发这种情况的代码是一个简单的池解决方案:

    public Object takeObject() {
        Object obj = internalTakeObject();
        while (obj == null) {
            try {
                available.wait();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            obj = internalTakeObject();
        }
        return obj;
    }

    private Object internalTakeObject() {
        Object obj = null;
        synchronized (available) {
            if (available.size() > 0) {
                obj = available.keySet().iterator().next();
                available.remove(obj);
                synchronized (taken) {
                    taken.put(obj, Boolean.valueOf(true));
                }
            }
        }
        return obj;
    }

    public void returnObject(Object …
Run Code Online (Sandbox Code Playgroud)

java multithreading locking pool

36
推荐指数
2
解决办法
8万
查看次数

Javascript document.write() - 用GIF替换PNG?

情景

我有一个带有HTML/CSS前端的asp.net Web应用程序.这一切都运行正常,但在Internet Explorer 6中,我在网站中使用的透明PNG由于此特定浏览器的设计不佳而不透明.

解决方案试图

我已经尝试了各种不起作用的IE6 PNG透明度修复程序.

建议的解决方案

当网站检测到浏览器是IE6时,我考虑过使用GIF图像替换.我没有任何javascript经验,但有人提到我可以使用javascript上的"document.write()"功能,将IEG替换为使用IE6作为浏览器时相同图像的GIF.

问题

请有人向我解释我将如何做到这一点?记住我对C#等有所了解,但没有javascript知识.我只是刚刚开始作为Web开发人员这么简单的解释会对我有很大的帮助.

谢谢您的帮助.问候.

javascript

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

Java中的类导入和包导入之间有什么区别?

在Java中,我们可以导入单个类以及整个类(包).

举个例子

import java.util.*
Run Code Online (Sandbox Code Playgroud)

包括

import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.List;
import java.util.Iterator;
import java.util.Map;
Run Code Online (Sandbox Code Playgroud)

除了代码的长度,以任何方式使用每种方法有什么特别的优势吗?内存分配?性能?

java import

15
推荐指数
2
解决办法
8396
查看次数

如何将字符串与可选部分匹配?

我们需要使用正则表达式解析一个字符串,该字符串可以是:

  1. XXXX出现问题
  2. 在XXXX有一个问题,以前的失败是YYY

XXX可以是任何字符(例如".")

我们如何制作匹配的正则表达式:

  1. XXXX
  2. ",之前的失败是YYY"(记住可以是可选的)

我试过的每一个正则表达式都在第一场比赛中捕获了所有内容(因为贪婪或太少因为不贪心)

我知道这是进步,但也许有人已经做到了.

regex

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

如何隐藏任务栏条目但保留窗口形式?

我想隐藏任务栏条目以最大化有效空间,因为应用程序有一个系统托盘图标,我不需要任务栏条目.该应用程序不允许您只有一个系统而不是两者.

如何隐藏任务栏条目但保留窗口形式?

windows-xp taskbar

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

Lucene查询 - "匹配x,y,z中的一个"

我有一个Lucene索引,其中包含具有"类型"字段的文档,该字段可以是"文章","论坛"或"博客"三个值中的一个.我希望用户能够在这些类型中进行搜索(每个文档类型都有一个复选框)

如何根据用户选择的类型创建Lucene查询?

一些先决条件是:

  • 如果用户没有选择的类型之一,我想没有该类型的结果.
  • 限制类型字段不应影响结果的排序.

如果我在SQL中写这个(对于"博客或论坛搜索")我会写:

SELECT * FROM Docs
WHERE [type] in ('blog', 'forum')
Run Code Online (Sandbox Code Playgroud)

lucene lucene.net

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