c++

aeronova의 이미지

C++ (partial) template specialization 질문입니다.

안녕하세요,
제가 template specialization을 하다가 막혀서 질문드립니다.
일단 기본 template 함수는 다음과 같구요,

template<typename T1, typename T2>
void printDebugMSG(const T1& msg1, const T2& msg2) {
    std::cout << msg1 << " : " << msg2 << std::endl;
}

이것을 다음과 같이 typedef로 정의한 Matrix type의 경우 다르게 처리하려고 합니다.
aeronova의 이미지

C++에서 template을 사용하더라도 특정 함수를 부르게 하는 법?

http://kldp.org/node/72740에 관련된 내용이지만, 새로운 질문이라 새로 글타래를 열었습니다.
Practical C++에 보면 templdate을 사용하더라도 특정 인자의 경우 template이 아닌 special function을 부르게 할 수 있다고 나와있더군요.
(page 440) 그래서 그 예제를 따라해봤는데 특정 인자를 정해준 경우에도 special function이 아닌 templdate이 불려지네요. :(

aeronova의 이미지

C++에서 (void*) type 말고 casting용으로 뭘 써야 하나요?

안녕하세요,
제가 다음과 같은 마지막 인자만 다른 두 가지 함수가 있습니다.

    void printMSG(const char* msg1, const int& msg2) {
        std::cout << msg1 << " : " << msg2 << std::endl;
    }
    void printMSG(const char* msg1, const double& msg2) {
        std::cout << msg1 << " : " << msg2 << std::endl;
    }   

근데 생각해보니 인자에 따라 두가지 함수를 각각 정의하는 것보다 casting을 이용하면 하나의 함수를 사용할 수 있지 않을까 하는 생각에 마지막 인자를 (void*)로 type을 정의하니 C++에서는 금지되었다면서 에러가 나더군요.
aeronova의 이미지

C++에서 2차원 vector를 동적으로 할당하는 방법에 관한 질문입니다.

안녕하세요,
이번에는 vector를 이용하여 동적으로 2차원 배열의 크기를 정하는 방법에 관한 질문입니다.
일단 2차원 vector를 이용하여 matrix라는 type이 다음과 같이 정의되어 있습니다.

    typedef std::vector<double> Row;
    typedef std::vector<Row>    Matrix;

그리고 5 X 3 크기로 배열의 크기를 동적으로 할당했습니다.

dgsquare의 이미지

C나 C++의 double 자료형에 대한 간단한 질문입니다.

안녕하세요. 다름이 아니라 C++에서 double형을 int형으로 casting해서 사용할려고 하는데,
제가 배운바에 의하면 소숫점이 절삭된다고 알고 있거든요.
근데 프로그램을 짜다가 오차가 계속 생겨서 디버깅을 하다가 다음 현상을 발견했습니다.

#include
#include
using namespace std;

int main(void) {
double dt = 15.25-14.74;

aeronova의 이미지

C++에서 "using namespace std"를 *.h에 안쓰고 *.cpp에 쓰니까 에러가 나네요.

안녕하세요,
약간 이상한 것을 경험해서 왜 그런지 궁금해서 질문을 올립니다.
제가 C++로 class.h와 class.cpp로 파일을 나누어서 작성했습니다.
어디선가 얼핏 보기를 "using namespace std"를 *.cpp에 적는 것이 좋다고
본 기억이 있어서 아무생각없이 *.cpp에 적고 test겸해서 컴파일을 해 보니
도대체 이유를 알 수 없는 에러들이 생기더군요. 그래서 이것 저것 시도하다가

aeronova의 이미지

C++에서 istringstream 사용에 관한 질문입니다.

안녕하세요,
istringstream을 C에서 sscanf처럼 사용되는 것을 보고 다음과 같은 line을 읽어서 전체 칼럼의 수를 계산하려고 했습니다.

"  7.855325253374236		15.71065050674847		23.5659757601227   "

위의 string의 전후로 whitespace가 들어가 있는데, 이렇게 되면 제가 다음처럼 칼럼 수를 계산하면 3이 아니라 4가 나오는군요.
aeronova의 이미지

C++로 파일을 읽어서 row, column 갯수를 알아내는 것에 관한 질문입니다.

안녕하세요,

제가 하려는 것은 간단한 matrix 형식의 파일을 읽어서 전체 행과 열의 갯수를 구하려고 하는 것입니다.
행과 열의 갯수를 알려고 하니 입력 파일을 2번 읽어야했고, 그래서 파일 포인터 위치를 각각의 경우 파일의 맨 처음으로 돌려서 처리했습니다. 또 clear()를 사용하여 파일 상태 정보도 모두 제거해서 혹시 모를 파일 읽기와 관한 오류를 없애려고 했습니다. 우여곡절끝에 대강 만든 후 다시 abstract class를 이용해서 다시 디자인하는 도중 이전에 되었던 행과 열을 구하는 부분이 작동하지 않음을 알았습니다. Derived Class에서 단순히 파일을 open만 했는데도 open 이후에 파일 포인터 위치를 찍어보니 -1이더군요. (이건 end of file을 가르키지 않나요?)

페이지

c++ 구독하기