构造函数体中的简单指针语法问题 所以我在C++和C语言中是全新的,现在我们有一个项目,几天内我就快要完成了。然而,我时不时会遇到一些问题。现在,我在通过构造函数正确分配类数据成员方面遇到了一个问题
下面是我试图创建的有问题类的代码:构造函数体中的简单指针语法问题 所以我在C++和C语言中是全新的,现在我们有一个项目,几天内我就快要完成了。然而,我时不时会遇到一些问题。现在,我在通过构造函数正确分配类数据成员方面遇到了一个问题,c++,pointers,constructor,C++,Pointers,Constructor,下面是我试图创建的有问题类的代码: #include <iostream> #include <string> class Set{ private: int *setOfElements; int noOfElements; public: Set::Set(int *setArray){ setOfElements = setArray; noOfElements = setArray->length(); } int *getSetO
#include <iostream>
#include <string>
class Set{
private:
int *setOfElements;
int noOfElements;
public:
Set::Set(int *setArray){
setOfElements = setArray;
noOfElements = setArray->length();
}
int *getSetOfElements(){ return setOfElements; }
int getNoOfElements(){ return noOfElements; }
int findMedian();
int findMean();
};
#包括
#包括
类集{
私人:
int*元素集;
国际面条;
公众:
Set::Set(int*setArray){
集合元素=集合数组;
noOfElements=setArray->length();
}
int*getSetOfElements(){return setOfElements;}
int getNoOfElements(){return noOfElements;}
int findMedian();
int findMean();
};
错误出现在构造函数主体的第二行中。如果我将int数组作为参数传递,那么当我想要引用该参数的长度时,我不必使用->而不是。因为referent是指针对象而不是传统意义上的对象 顺便说一下,VS2010中的错误是,“错误:表达式必须有指向类类型的指针”
谢谢
int
不是类,绝对没有length()
元素。您正被“试图将另一种语言复制并粘贴到C++中”的邪恶势力所腐蚀。唯一的解决办法是“学习C++”
你为什么还要自己写一套呢?该语言附带
std::set
int
不是类,绝对没有length()
元素。您正被“试图将另一种语言复制并粘贴到C++中”的邪恶势力所腐蚀。唯一的解决办法是“学习C++”
你为什么还要自己写一套呢?该语言附带std::set
std::set
,而不是编写自己的类。您还需要使用标准库的几个其他位来获得findMedian
和findMean
的行为:std::set
,而不是编写自己的类。您还需要使用标准库的几个其他位来获得findMedian
和findMean
的行为:我想我对C++中原始数据类型的指针(C也一样)感到困惑。在这里,char *等于字符串(char *是指向字符串中的第一个字符,然后遍历其他字符数组)。我看到代码告诉我,这对于整数也是可能的(并且大概是任何原始的)。如果我使用int*arr与int-arr[]这两种方法的唯一区别不是它们的分配方式(堆栈上的动态vs(在退出作用域时将被销毁))?这是一个单独的问题,与我原来的帖子无关。@Gthoma2:
char*
不是字符串char*
是指向一个字符的指针<代码>标准::字符串是一个字符串。你需要找到更好的学习材料。int*
和int[]
之间没有区别。您不应该以这种方式传递数组,因为许多原因,它非常糟糕。使用标准的std::array
和std::vector
。同样,我目前正在尝试学习所有这些,所以我可能在这里错了,但是您不能将绑定到char*的标识符视为字符串吗?我知道,实际上,它是一个指向单个字符的指针,但您不能遍历绑定到该标识符的其余字符吗?如果int*和int[]之间没有区别,并且两者都可以被视为数组,那么这同样适用于与char[]相同的char*,我们都知道,字符串只是字符数组。所以char*是一个字符串。这正是让我困惑的地方,我意识到这是一个C事件,而不是C++事件。我将使用STD库中的类。我猜我对C++中的原始数据类型的指针感到迷惑(C也是如此),char *等于字符串(char *是指向字符串中的第一个字符,然后遍历其他字符数组)。我看到代码告诉我,这对于整数也是正确的。如果我使用int*arr和int-arr[]并不是这两者之间唯一的区别,它们是如何分配的(动态的vs-on)
#include <iterator>
#include <numeric>
std::set<int> s;
// Initialize it...
int mean = std::accumulate(s.begin(), s.end(), 0);
mean /= s.size(); // Would you really want to use a double?
// std::set is ordered, so finding the median is just iterating to the middle.
int median;
std::set<int>::iterator i = s.begin();
std::advance(i, s.size() / 2);
if (s.size() % 2 == 1) {
median = *i;
} else {
median = (*i + *(++i)) / 2;
}