小编Cem*_*ncu的帖子

C++按输入日期获取哪一天

我怎样才能通过输入日期获得哪一天?

输入日期示例:15-08-2012

我怎么知道它的星期一,星期二或哪一天使用C++.

我试图从一个月的可用日期省略周末,所以如果我输入例如2012年8月,我想检查哪一天是星期六,哪一天是星期日,所以我可以从可用日期省略它对于我的节目.

我尝试获取一个月内的天数的代码:

if (month == 4 || month == 6 || month == 9 || month == 11)
{
    maxDay = 30;
}
else if (month == 2)
//{
//  bool isLeapYear = (year% 4 == 0 && year % 100 != 0) || (year % 400 == 0);
//  if (isLeapYear)
//  { 
//   maxDay = 29;
//  }
//else
{
    maxDay = 28;
}
Run Code Online (Sandbox Code Playgroud)

接下来我想知道的是那个月,哪一天是周末所以我可以从结果中省略.

c++

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

防止为const ref参数临时传递

我有一个功能:

void AddImage(const Image &im);
Run Code Online (Sandbox Code Playgroud)

此功能不需要修改图像,但它将图像存储为const引用,以供以后使用。因此,此功能不应允许临时使用。在没有任何预防措施的情况下,以下工作:

Image GetImage();

...

AddImage(GetImage());
Run Code Online (Sandbox Code Playgroud)

有没有办法防止此函数调用?

c++ const reference

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

禁用X11窗口的大小调整

我试图阻止用户调整(包括最大化)X11应用程序的窗口.任何人都能指出我正确的方向吗?谷歌没有像往常那样乐于助人.谢谢!

注意:我没有使用Qt或任何其他包装器,直接使用X11调用.

x11

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

C++优化语句

请考虑以下声明:

 C a, b; //C contains c1, c2 and c3 all integers

if(a.c1==b.c1 && a.c2 == b.c2) {
     a.c3=b.c3;
 }
Run Code Online (Sandbox Code Playgroud)

此声明是否会针对以下内容进行优化:

 if(a.c1 == b.c1) {
    if(a.c2 == b.c2) {
       a.c3=b.c3;
    }
 }
Run Code Online (Sandbox Code Playgroud)

AFAIK,C++编译器不执行此类操作,因为它可能有副作用.但这些都是内置类型.

  • 标准中有什么相关内容吗?
  • 如果它是编译器特定的主流编译器(MS,GNU,Intel)正在做或不做?

c++ optimization

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

重新定义派生类的变量

以下是否有效?或者我怎样才能接近这一点.

template<class T_> class Template {
   //something
};

class Parent {
public:
   Template<Parent> variable;

   Parent() : variable(this) { }
};

class Derived : public Parent {
public:
   Template<Derived> variable;

   Derived() : Parent() { }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

c++ inheritance

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

innerHTML在FF中工作但在IE中没有!

在我的JSP中,我使用的自定义标记<showDateFormat/>
如下:

Date From:<showDateFormat/>
Run Code Online (Sandbox Code Playgroud)

在我的common.js文件中

function addDateFormatInfo(){
    var dateFormatHolder = document.getElementsByTagName("showDateFormat"); 
    if ( dateFormatHolder ){        
        for ( i = 0 ; i < dateFormatHolder.length; i++ ){
            dateFormatHolder[i].innerHTML = '<div class="infoSmall" ><span>(mm/dd/yyyy)</span></div>';                       
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

所以在我的页面中,只要有showDateFormat标签被使用,它就会显示出来(mm/dd/yyyy).它在FF中工作正常,但在IE中却没有.可能是什么问题呢?

javascript firefox internet-explorer innerhtml

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

模板类型转换

我正在构建一个矩阵模板.有运营商,功能和所有工作正常.除非我尝试将双类型矩阵转换为int类型矩阵(反之亦然).=运算符无法定义,因此无法为类外部的basic_Matrix2D和basic_Matrix2D覆盖它.我知道我可以在class =运算符中编写来转换,但在这种情况下会有两个=运算符具有相同的参数.当使用double作为模板参数时,从double转换将与从模板参数转换相同.类定义如下,可以从SourceForge访问代码

template <class _T> class basic_Matrix2D {

}
Run Code Online (Sandbox Code Playgroud)

我还记得另一个关于模板的问题,转换为模板类型指针的工作原理,而转换为模板类型却没有.这可能是特定于编译器的.观察:

operator _T() {
   return something;
}

operator _T*() {
   return somethingelse;
}
Run Code Online (Sandbox Code Playgroud)

提前谢谢,
Cem

c++ templates

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

将类函数指针转换为void*,反之亦然

我试图比较两个函数的地址是否相等.我存储的函数的类型是已知的.这个系统通常有效,考虑下面的代码(不是从程序中写成样本):

virtual bool compare(void *fn2) {
  void (*fn)(int);

  if(fn==fn2)
     return true;
}
Run Code Online (Sandbox Code Playgroud)

但是,当考虑类函数时,相同的方法不起作用.

virtual bool compare(void *fn2) {
  void(__thiscall myclass::*fn)(int);
  void *fn2;

  if(fn==fn2)  //error C2440 type cast: cannot convert void* to void(__thiscall...
     return true;
}
Run Code Online (Sandbox Code Playgroud)

这些函数覆盖了一个公共基类的纯虚函数,类似于以下内容:

virtual bool compare(void*) = 0;
Run Code Online (Sandbox Code Playgroud)

由于我无法在虚拟函数中使用模板<>,因此我没有选择权.有没有办法(无论如何)统一类功能和常规功能?

提前谢谢,Cem

c++ function-pointers

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

C++模板和重载运算符

我遇到了一些奇怪的行为.我不确定这是否有效.请注意,我并不是想让它发挥作用,我更关心理论方面.我正在使用Visual C++ 2010.请注意以下代码

template <class T_>
ostream &operator <<(std::ostream &out, 
        typename SequenceCheckResult<T_>::directiontype const &direction) {

    switch(direction) {
    case SequenceCheckResult<T_>::None:
        out<<"none o";
        break;
    case SequenceCheckResult<T_>::Horizontal:
        out<<"horizontal _";
        break;
    case SequenceCheckResult<T_>::Vertical:
        out<<"vertical |";
        break;
    case SequenceCheckResult<T_>::ForwardDiagonal:
        out<<"forward diagonal \\";
        break;
    case SequenceCheckResult<T_>::BackwardDiagonal:
        out<<"backward diagonal /";
        break;
    }

    return out;
}
Run Code Online (Sandbox Code Playgroud)

显然,模板类SequenceCheckResult包含一个名为directiontype的枚举.现在上面的代码没有实例化,并且打印了变量的整数值.即使我提供专业化,它仍然无效.如果我创建以下函数,则使用它并打印文本值.请注意,上述函数的以下代码和int特化仅按template<>行和<int>后续不同operator <<.

ostream &operator << (std::ostream &out, 
         SequenceCheckResult<int>::directiontype const &direction) {

    switch(direction) {
    case SequenceCheckResult<int>::None:
        out<<"none o";
        break;
    case SequenceCheckResult<int>::Horizontal:
        out<<"horizontal _";
        break;
    case SequenceCheckResult<int>::Vertical:
        out<<"vertical …
Run Code Online (Sandbox Code Playgroud)

c++ enums templates

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