Тема: Якась проста помилка

Що це?

#include <stdio.h>
//#include <cblas.h>

double m[] = {
  3, 1, 3,
  1, 5, 9,
  2, 6, 5
};

double x[] = {
  -1, -1, 1
};

double y[] = {
  0, 0, 0
};


  template <typename T>
 void cblas_dgemv(T*x, T*y)
 { for ( int i=0; i<3; ++i) 
    y[i]= x[i]*y[i]; }



int main(void)
{
  int i, j;

  for (i=0; i<3; ++i) {
    for (j=0; j<3; ++j) printf("%5.1f", m[i*3+j]);
    putchar('\n');
  }

  cblas_dgemv( *x, *y);


  for (i=0; i<3; ++i)  printf("%5.1f\n", y[i]);

  return 0;
}

Ошибка    1    error C2784: void cblas_dgemv(T *,T *): не удалось вывести аргумент шаблон для "T *" из "double"    d:..cpp    35    1    op

Подякували: koala1

2

Re: Якась проста помилка

Компілятор не може перетворити тип double на вказівник.
Я думаю, що в рядку 35 ви мали на увазі

cblas_dgemv(x, y);
Подякували: koala, Дмитро-Чебурашка2

Re: Якась проста помилка

Спасибі!!

Re: Якась проста помилка

Чомусь гадав що якщо у функцію передається покажчик
то потрібно якось відповідно і подавати в неї

5 Востаннє редагувалося koala (13.06.2015 09:14:41)

Re: Якась проста помилка

Ім'я масиву зазвичай і означає показчик.

int a[10];  //a - масив
int *b = a;//b - вказівник
a == &a[0]; //завжди true, бо a використовується як вказівник
a[0] = 3; b[1] = 4; //працюють абсолютно однаково
b = NULL; a = NULL; //другий вираз не працює, бо a - масив
sizeof(a) == sizeof(b); //зазвичай false: a - розміром 40 байт (в 32-бітній системі), b - розміром 4 байти
Подякували: Chemist-i2