标签: c++

识别模板中的基元类型

我正在寻找一种方法来识别模板类定义中的基元类型.

我的意思是,有这个课:

template<class T>
class A{
void doWork(){
   if(T isPrimitiveType())
     doSomething();
   else
     doSomethingElse(); 
}
private:
T *t; 
};
Run Code Online (Sandbox Code Playgroud)

有没有办法"实现"isPrimitiveType().

c++ templates

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

重载新/删除

我在我的程序中制作了一个小内存泄漏查找程序,但我的方法是重载new和delete(以及new []和delete [])似乎没有做任何事情.

void* operator new (unsigned int size, const char* filename, int line)
{
    void* ptr = new void[size];
    memleakfinder.AddTrack(ptr,size,filename,line);
    return ptr;
}
Run Code Online (Sandbox Code Playgroud)

我重载的方式new显示在上面的代码片段中.我想这是操作员返回void*的东西,但我不知道该怎么办.

c++ operator-overloading new-operator delete-operator

24
推荐指数
4
解决办法
7万
查看次数

在MacOS中编译C++代码时的dSYM目录

为什么在Mac中编译C++总是创建*.dSYM目录?有没有办法禁用它?

c++ compiler-construction macos debug-symbols

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

C++中Java的IllegalArgumentException的等价物

在Java中,如果方法的输入参数无效,我们可以抛出一个IllegalArgumentException(类型为RuntimeException).在C++中,没有检查和未检查异常的概念.标准C++中是否有类似的异常可用于指示运行时异常?或者是否有一种不符合标准的共同风格,但每个人都在实践中遵循这样的情况?

或者,我应该创建自己的自定义异常并抛出它吗?

c++ java validation illegal-input runtimeexception

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

模板类型的命名约定?

传统上,模板类型的名称只是一个大写字母:

template<class A, class B, class C>
class Foo {}; 
Run Code Online (Sandbox Code Playgroud)

但我犹豫不决,因为它是非描述性的,因此难以阅读.所以,这样的事情会不会更好:

template<class AtomT, class BioT, class ChemT>
class Foo {}; 
Run Code Online (Sandbox Code Playgroud)

我也倾向于认为以下不是一个坏主意:

template<class ATOM, class BIO, class CHEM>
class Foo {}; 
Run Code Online (Sandbox Code Playgroud)

它使它们脱颖而出(而且,它又是大写字母).你怎么看?

c++ templates naming-conventions

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

关闭c ++控制台应用程序时会发生什么

我想问题就是这一切,但是,如果有人关闭c ++控制台应用程序会发生什么?如上所示,单击顶角的"x".它会立即关闭吗?它会引发某种异常吗?是不确定的行为?

c++ winapi console-application

24
推荐指数
4
解决办法
1万
查看次数

是否可以将const引用返回给私有成员?

我需要实现对私有成员容器的只读访问.如果我返回一个常量引用,是否可以const_cast它并获得对该成员的完全访问权限?使用的技术是什么?

谢谢.

c++ const reference

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

在实践中std :: sort和std :: stable_sort之间的性能差距有多大?

两者都应该在O(n log n)中运行,但一般排序比stable_sort快.实践中的性能差距有多大?你对此有一些经验吗?

我想排序大量大约20字节的结构.结果的稳定性在我的情况下会很好,但它不是必须的.目前底层容器是一个普通数组,也许稍后可以将其更改为std :: deque.

c++ sorting stl

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

如何在cmake中使用SDL2和SDL_image

我在寻找编译使用C++程序最简单的方法SDL2SDL_image与cmake的.

经过几个小时的搜索后,这是我最好的尝试:

的CMakeLists.txt

project(shooter-cmake2)

cmake_minimum_required(VERSION 2.8)

set(SOURCES
shooter.cpp
classes.cpp
utils.cpp
)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")

add_executable(${PROJECT_NAME} ${SOURCES})

INCLUDE(FindPkgConfig)
PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2)
PKG_SEARCH_MODULE(SDL2_image REQUIRED sdl2_image)
INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIRS} ${SDL2IMAGE_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARIES} ${SDL2IMAGE_LIBRARY})
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

In function `loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, SDL_Renderer*)':
undefined reference to `IMG_LoadTexture'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

这是函数调用:

#include "SDL.h"
#include "SDL_image.h"

SDL_Texture* loadTexture(const std::string &file, SDL_Renderer *ren){
    SDL_Texture *texture = IMG_LoadTexture(ren, file.c_str());
    texture != nullptr or die("LoadTexture");
    return texture;
}
Run Code Online (Sandbox Code Playgroud)

我很绝望.请帮我!谢谢!:)

c++ sdl sdl-image cmake sdl-2

24
推荐指数
4
解决办法
5万
查看次数

符号(@)和美元符号($)在C或C++中是否有任何特殊含义

最近我的一位朋友在接受采访时遇到了这个问题.面试官问他是否有特殊字符$, @, |, ^, ~在c或c ++中有任何使用方法.

我知道它们|, ^ and ~分别用作Bitwise OR,XOR和Complement.

但我不知道是否@ and $有任何特殊含义.如果有,请举例说明可以应用的地方吗?

c c++ special-characters

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