Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите, ошибка где? / 8 сообщений из 8, страница 1 из 1
19.10.2006, 18:36
    #34067829
Mefody
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, ошибка где?
Выдает сообщение: no appropriate default constructor available
class CTriangle
{

float fABLenReal;
float fBCLenReal;
float fACLenReal;

float fABLenPict;
float fBCLenPict;
float fACLenPict;

float fXAngle;
float fYAngle;

V2dVector A;
V2dVector B;
V2dVector C;

public:

CTriangle( V2dVector a , V2dVector b, V2dVector c )
{

fABLenReal = 5;
fBCLenReal = 3;
fACLenReal = 4;

A = a;
B = b;
C = c;

Get2DLen(a , b, &fABLenPict);
Get2DLen(b , c, &fBCLenPict);
Get2DLen(a , c, &fACLenPict);


fXAngle = (float)asin(fABLenPict/fABLenReal);
fYAngle = (float)asin(fACLenPict/fACLenReal);

};


~CTriangle(){};


V2dVector GetAngle(V2dVector A)
{
A.PutVect(fXAngle , fYAngle);
return A;

}



//Interface Members:
void Get2DCoordRelativeWorldCenter(V2dVector Pict ,V3dVector* Vect3dWorld )
{
float fXPic;
float fYPic;
float fZPic;

float fXWd;
float fYWd;
float fZWd;

Pict.GetVect(&fXPic , &fYPic);

fXWd = (float)(fXPic * sin(fXAngle));
fYWd = (float)(fYPic * cos(fYAngle));

// Vect3dWorld->PutVect();



};

private:

void Get2DLen(V2dVector From , V2dVector To , float* TargetVar)
{
float x1,y1,x2,y2;

From.GetVect(&x1,&y1);
To.GetVect(&x2,&y2);

*TargetVar = (float)sqrt( pow((float)(x1 - x2) , 2) + pow((float)(y1 - y2) , 2) );

};



};

V2dVector и V3dVector - ранее корректно объявленные классы.
...
Рейтинг: 0 / 0
19.10.2006, 18:44
    #34067848
nikname
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, ошибка где?
Где-то конструируется Triangle без параметров.
Как только вы пишете свой конструктор, С++ автоматом удаляет свой, дефолтный - без параметра.
...
Рейтинг: 0 / 0
19.10.2006, 18:44
    #34067849
zzzzzzzzzzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, ошибка где?
Написано же нет конструктора по умалчанию(т.е. без параметров). Где-то наверняка еще и создаёшь обьект этого класса без параматров в конструкторе.
...
Рейтинг: 0 / 0
19.10.2006, 18:46
    #34067850
Подскажите, ошибка где?
вы бы полное сообщение об ошибке привели
а вообще вот это

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CTriangle( V2dVector a, V2dVector b, V2dVector c )
{
...
	A = a;
	B = b;
	C = c;
...
}


наводит на грустные размышления: здесь вызываются 6 конструкторов и 3 присваивания.

так и задумано и все ли данные операции определены?
...
Рейтинг: 0 / 0
19.10.2006, 18:49
    #34067860
Mefody
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, ошибка где?
Полностью:

class V2dVector
{

float X;
float Y;


public:

V2dVector(float x , float y)
{
X = x;
Y = y;

};

~V2dVector(){};

GetVect(float* x , float* y)
{
*x = X;
*y = Y;

};


PutVect(float x , float y)
{
X = x;
Y = y;

};

};

class V3dVector
{

public:

float X;
float Y;
float Z;

V3dVector(float x , float y , float z)
{
X = x;
Y = y;
Z = z;
};

~V3dVector(){};

GetVect(float* x , float* y , float* z)
{
*x = X;
*y = Y;
*z = Z;

};


PutVect(float x , float y, float z)
{
X = x;
Y = y;
Z = z;
};

};

class CTriangle
{

float fABLenReal;
float fBCLenReal;
float fACLenReal;

float fABLenPict;
float fBCLenPict;
float fACLenPict;

float fXAngle;
float fYAngle;

V2dVector A;
V2dVector B;
V2dVector C;

public:

CTriangle( V2dVector a , V2dVector b, V2dVector c )
{

fABLenReal = 5;
fBCLenReal = 3;
fACLenReal = 4;

A = a;
B = b;
C = c;

Get2DLen(a , b, &fABLenPict);
Get2DLen(b , c, &fBCLenPict);
Get2DLen(a , c, &fACLenPict);


fXAngle = (float)asin(fABLenPict/fABLenReal);
fYAngle = (float)asin(fACLenPict/fACLenReal);

};


~CTriangle(){};


V2dVector GetAngle(V2dVector A)
{
A.PutVect(fXAngle , fYAngle);
return A;

}



//Interface Members:
void Get2DCoordRelativeWorldCenter(V2dVector Pict ,V3dVector* Vect3dWorld )
{
float fXPic;
float fYPic;
float fZPic;

float fXWd;
float fYWd;
float fZWd;

Pict.GetVect(&fXPic , &fYPic);

fXWd = (float)(fXPic * sin(fXAngle));
fYWd = (float)(fYPic * cos(fYAngle));

// Vect3dWorld->PutVect();



};

private:

void Get2DLen(V2dVector From , V2dVector To , float* TargetVar)
{
float x1,y1,x2,y2;

From.GetVect(&x1,&y1);
To.GetVect(&x2,&y2);

*TargetVar = (float)sqrt( pow((float)(x1 - x2) , 2) + pow((float)(y1 - y2) , 2) );

};



};
...
Рейтинг: 0 / 0
19.10.2006, 18:51
    #34067867
Mefody
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, ошибка где?
Как правильно интерпретировать параметры конструктора CTriangle:как вызов трех конструкторов или указание типов трех переменных?
...
Рейтинг: 0 / 0
19.10.2006, 19:01
    #34067889
Подскажите, ошибка где?
у вас нет конструктора по-умолчанию для V2dVector...
так должно пройти:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CTriangle( V2dVector &a, V2dVector &b, V2dVector &c ): A(a), B(b), C(c)
{
...
// вот этого не надо:
//
//	A = a;
//	B = b;
//	C = c;
...
}

...
Рейтинг: 0 / 0
19.10.2006, 19:04
    #34067894
Mefody
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, ошибка где?
Я ваш должник:-)
Хотя что может дать новичек?!:-)))))))))
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите, ошибка где? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]