错误:无法在赋值中将“int*”转换为“Pt*”
error:cannot convert ‘int*’ to ‘Pt*’ in assignment
我是指针用法的新手,遇到了编译错误 gcc
这是我的代码:
class Pt
{
public:
int Ph;
};
Pt *Pa;
Pa = new T[N];
for(int i=0;i < N; i++)
Pa[i].Ph=0;`
和错误消息:
error: expected type-specifier before ‘T’
error: cannot convert ‘int*’ to ‘Pt*’ in assignment
我试图做的是声明一个包含最初为 0 的int
的类,并为该类的 N 提供一个 mem 空间。
感谢您花时间阅读我的问题,任何帮助将不胜感激。
如果没有用户定义的构造函数,您可以像这样对对象进行值初始化:
Pt a = Pt();
a
是类型为 Pt
的对象,其int
成员设置为 0
。
要声明数组,请使用:
Pt* Pa = new Pt[N]();
数组中的N
对象是值初始化的,因此不再需要以下for
循环。
要编写C++代码,只需
std::vector<Pt> Pa(N);
您没有声明任何名为 T
的类型; 可能在此之前您还有其他错误/警告。
你有多个错误
1)Pa[i]
会持有指向pt的指针,所以考虑写Pa[i]->Ph
2)你在这里想做什么不清楚:
Pa = new T[N];
尝试这样的事情:
class Pt
{
public:
Pt() : Ph(0)
{ ; }
int Ph;
};
#define CAPCITY 15U
int main(void)
{
Pt Pa[CAPACITY];
for (unsigned i = 0; i < CAPACITY; ++i)
{
std::cout << "Pa[" << i << "].Ph = " << Pa[i].Ph << endl;
}
return EXIT_SUCCESS;
}
class Pt
的初始值设定项列表,当数组构造类时,将字段Ph
设置为零。
顺便说一句,与其他语言不同,您不需要为每个变量实例使用 new
。
我强烈建议为您的类和变量名称使用更多的字母,并尝试使用有意义的东西。 两个字母打字更快,但如果这是你的理由,请参加键盘课。
相关文章:
- 是否可以从int转换为enum类类型
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 将字符串中的 int 转换为字母;
- 主.cpp:18:20:错误:从"int*"转换为"int"会失去精度 [-fa
- 将非常大的 int 转换为双倍,在某些计算机上会损失精度
- 如何将矢量<int>转换为字符数组?
- C++ 无法从 const int* 转换为 const_iterator
- 我不断收到错误 C2440'=':无法从"int *(__cdecl *)(int *,int *,int,int)"转换为"int *
- 如何将 int[4] 转换为 std::array<int,4>?
- 如何将data[i].int转换为vaible
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- 将私有矩阵形式 int 转换为双 C++
- 无法将参数 1 从 'int' 转换为 'int &'
- 将 int 转换为字符串后始终得到 0
- isspace 函数的性能警告,从 int 转换为布尔值
- 将大 int 转换为浮点数,而不舍入 c++
- 错误:无法将'uint8* {aka unsigned int*}'转换为"常量emxArray_uint8_T*"?
- 将未签名的INT转换为BCD
- 在 C++ 中将 int 转换为双精度