小编hkB*_*sai的帖子

"template <class T>"和"template <typename T>"有什么区别?

可能重复:
对模板参数使用'class'或'typename'?

我看到两个不同的模板类声明:

template <class T> class SampleClass1
{
    // ...
};
Run Code Online (Sandbox Code Playgroud)

template <typename T> class SampleClass2
{
    // ...
};
Run Code Online (Sandbox Code Playgroud)

这两个代码有什么区别?

编辑:我将错误的关键字"typedef"更正为"typename".

c++ templates class

12
推荐指数
2
解决办法
6761
查看次数

如何在标准C++字符串中使用3字节和4字节Unicode字符?

在标准C++中,我们有charwchar_t存储字符.char可以存储0x000xFF之间的值.并且wchar_t可以在0x0000和之间存储值0xFFFF.std::string使用char,因此它只能存储1个字节的字符.std::wstring使用wchar_t,因此它可以存储最多2个字节宽度的字符.这就是我对C++中字符串的了解.如果到目前为止我说错了,请纠正我.

我在维基百科上阅读了UTF-8的文章,我了解到一些Unicode字符占用的空间最多为4个字节.例如,汉字有一个Unicode代码点0x24B62,它占用内存中的3字节空间.

是否有一个STL字符串容器来处理这些字符?我正在寻找类似的东西std::string32.此外,我们有main()ASCII入口点,wmain()对于具有16位字符支持的入口点; 我们使用3和4字节Unicode支持的代码的入口点是什么?

你能加一个小例子吗?

(我的操作系统:Windows 7 x64)

c++ string stl stdstring unicode-string

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

在安装任何挂起的更新时是否有关闭Windows的API函数?

我知道ExitWindowsEx()API函数只关闭Windows.但据我所知,你不能让Windows安装任何挂起的更新.

是否有任何API支持安装任何挂起的更新(在标准的蓝屏中说" 已经安装了m个更新 - 请不要关闭或拔掉你的电脑,Windows将自行关闭 ")然后关闭Windows(相当于单击Windows用户界面的"安装更新和关闭"菜单选项)?

(操作系统版本:Windows XP及更高版本.)

windows winapi shutdown system-shutdown

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

10
推荐指数
2
解决办法
4092
查看次数

将对象与左侧的常量相乘

我有一个Matrix类,它有*标量和矩阵乘法的重载运算符.

template <class T> class Matrix
{
    public:
        // ...
        Matrix operator*(T scalar) const;
        // ...
}

// ...

template <class T>
Matrix<T> Matrix<T>::operator*(T RightScalar) const
{
    Matrix<T> ResultMatrix(m_unRowSize, m_unColSize);
    for (uint64_t i=0; i<m_unRowSize; i++)
    {
        for (uint64_t j=0; j<m_unColSize; j++)
        {
            ResultMatrix(i, j) = TheMatrix[m_unColSize * i + j] * RightScalar;
        }
    }
    return ResultMatrix;
}

// ...
Run Code Online (Sandbox Code Playgroud)

我可以将矩阵对象与右侧的标量相乘而没有任何问题:

Matrix<double> X(3, 3, /* ... */);  // Define a 3x3 matrix and initialize its contents
Matrix<double> …
Run Code Online (Sandbox Code Playgroud)

c++ templates operator-overloading member-functions non-member-functions

9
推荐指数
2
解决办法
7440
查看次数

有效地const_cast-an恒定参考参数

我有一个成员函数,它将一个常量引用参数带到另一个对象.我想const_cast这个参数,以便在成员函数中轻松使用它.为此,以下哪个代码更好?:

void AClass::AMember(const BClass & _BObject)
{
    // FORM #1 - Cast as an object:
    BClass BObject = const_cast<BClass &>(_BObject);
    // ...
}

void AClass::AMember(const BClass & _BObject)
{
    // FORM #2 - Cast as a reference:
    BClass & BObject = const_cast<BClass &>(_BObject);
    // ...
}
Run Code Online (Sandbox Code Playgroud)

你能比较这两种形式吗?在速度和内存使用标准方面哪一个更好?

c++ parameters reference constants const-cast

7
推荐指数
2
解决办法
7363
查看次数

如何在不制作副本的情况下将`std :: string`转换为`std :: vector <unsigned char>`?

我想调用一个库函数,其签名是:

bool WriteBinary(const std::vector<uint8_t> & DataToWrite);
Run Code Online (Sandbox Code Playgroud)

我有一个std::string变量,我想把它作为参数发送给它.

void WriteString(const std::string & TextData)
{
    // ...
    WriteBinary(TextData);  // <-- How to make this line work?
    // ...
}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以直接发送std::string变量而无需复制它?

c++ casting stdstring stdvector

7
推荐指数
3
解决办法
1807
查看次数

我怎样`std :: bind`一个非静态类成员到Win32回调函数`WNDPROC`?

我正在尝试将非静态类成员绑定到标准WNDPROC函数.我知道我可以通过使类成员静态来做到这一点.但是,作为一名C++ 11 STL学习者,我对使用<functional>标题下的工具非常感兴趣.

我的代码如下.

class MainWindow
{
    public:
        void Create()
        {
            WNDCLASSEXW WindowClass;
            WindowClass.cbSize          = sizeof(WNDCLASSEX);
            WindowClass.style           = m_ClassStyles;
            WindowClass.lpfnWndProc     = std::function<LRESULT(HWND, UINT, WPARAM, LPARAM)>
                                            (   std::bind(&MainWindow::WindowProc, 
                                                *this,
                                                std::placeholders::_1,
                                                std::placeholders::_2,
                                                std::placeholders::_3,
                                                std::placeholders::_4));
            WindowClass.cbClsExtra      = 0;
            WindowClass.cbWndExtra      = 0;
            WindowClass.hInstance       = m_hInstance;
            WindowClass.hIcon           = LoadIconW(m_hInstance, MAKEINTRESOURCEW(IDI_WINDOW));
            WindowClass.hCursor         = LoadCursor(NULL, IDC_ARROW);
            WindowClass.hbrBackground   = (HBRUSH) COLOR_WINDOW;
            WindowClass.lpszMenuName    = MAKEINTRESOURCEW(IDR_MENU);
            WindowClass.lpszClassName   = m_ClassName.c_str();
            WindowClass.hIconSm         = LoadIconW(m_hInstance, MAKEINTRESOURCEW(IDI_WINDOW_SMALL));
            RegisterClassExW(&WindowClass);
            m_hWnd = CreateWindowEx(/*_In_      DWORD*/     ExtendedStyles,
                                    /*_In_opt_  LPCTSTR*/   m_ClassName.c_str(),
                                    /*_In_opt_  LPCTSTR*/   m_WindowTitle.c_str(),
                                    /*_In_ …
Run Code Online (Sandbox Code Playgroud)

c++ winapi wndproc stdbind std-function

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

我们可以使用`const_cast`来修改常量变量吗?

int main()
{
    const int ia = 10;

    int *pia = const_cast<int*>(&ia);
    *pia = 5;

    std::cout << &ia << "\t" <<  pia <<endl;
    std::cout <<  ia << "\t" << *pia <<endl;

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

输出是:

0x28fef4       0x28fef4
10             5
Run Code Online (Sandbox Code Playgroud)

*piaia具有相同的地址,但它们具有不同的值.我的目的是用来const_cast修改一个常量值,但结果显示它不起作用.

有谁知道为什么?

c++ volatile const-cast compiler-optimization

7
推荐指数
2
解决办法
1638
查看次数

如何在Code :: Blocks中使用wmain()入口点?

我重新安装了Code :: Blocks(我安装了一个用于Windows 7的GCC编译器(codeblocks-10.05mingw-setup.exe)).然后我尝试编译这个非常简单的代码:

int wmain(int argc, wchar_t* argv[])
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

C:\研发\ IDE \代码块\ MinGW的\ BIN ..\LIB\GCC \的mingw32\4.4.1 ......\libmingw32.a(main.o),此:main.c中|| 未定义的引用`WinMain @ 16'| || ===构建完成:1个错误,0个警告=== |

当我尝试使用main()条目运行我的代码时,它会按预期运行而不会出现任何错误或警告.我如何wmain()在我的代码中使用?我需要做哪些修改?

c++ unicode mingw codeblocks wmain

6
推荐指数
2
解决办法
2022
查看次数