小编Nid*_* MS的帖子

比较始终以char和常量失败

我试图比较字符串的第一个字符和十六进制常量来确定数据的类型.但每次失败.任何人都可以解释为什

char charray[] = {0xAA, 0x00, 0x02};
char ch = charray[0];
if (0xAA == ch)
{
    printf("Equal\n");
}
Run Code Online (Sandbox Code Playgroud)

c if-statement char

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

为未定义类型键入cast

如何为前向声明的类实现类型转换操作符.我的代码是.

class CDB;
class CDM
{
public:
    CDM(int = 0, int = 0);
    operator CDB() const  //error
    {
    }
private:
    int     m_nMeters;
    int     m_nCentimeters;
};

class CDB
{
public:
    CDB(int = 0, int = 0);
    operator CDM() const  //error
    {
    }
private:
    int     m_nFeet;
    int     m_nInches;
};
Run Code Online (Sandbox Code Playgroud)

当我编译它时,我得到一个错误

错误C2027:使用未定义类型'CDB'

c++ casting class forward-declaration undefined-symbol

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

模板类构造函数的专业化

我是C++模板的新手.谁能解释为什么我的专用构造函数永远不会被执行.它删除const和引用运算符时工作.

#include<iostream>
#include<string>

using namespace std;

template<typename T>
class CData
{
public:
    CData(const T&);
    CData(const char*&);
private:
    T m_Data;
};

template<typename T>
CData<T>::CData(const T& Val)
{
    cout << "Template" << endl;
    m_Data = Val;
}
template<>
CData<char*>::CData(const char* &Str)
{
    cout << "Char*" << endl;
    m_Data = new char[strlen(Str) + 1];
    strcpy(m_Data, Str);
}

void main()
{
    CData<int> obj1(10);
    CData<char*> obj2("Hello");
}
Run Code Online (Sandbox Code Playgroud)

输出是

模板

模板

c++ templates partial-specialization template-specialization

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

C和C++中const变量的不同输出

#include <stdio.h>

int main(void) {
    const int a = 4;

    int *p = (int*)&a;
    printf("%d\n", a);

    *p = 6;
    printf("%d\n", a);

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

代码在C和C++编译器上提供不同的输出:

//In C:
4
6

//In C++:
4
4
Run Code Online (Sandbox Code Playgroud)

c c++ compiler-construction const

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